diff --git a/src/index.jsx b/src/index.jsx
index 5887abb0..576521f5 100755
--- a/src/index.jsx
+++ b/src/index.jsx
@@ -58,6 +58,7 @@ initialize({
config: () => {
mergeConfig({
LOGIN_ISSUE_SUPPORT_LINK: process.env.LOGIN_ISSUE_SUPPORT_LINK || null,
+ ACTIVATION_EMAIL_SUPPORT_LINK: process.env.ACTIVATION_EMAIL_SUPPORT_LINK || null,
});
},
},
diff --git a/src/logistration/AccountActivationMessage.jsx b/src/logistration/AccountActivationMessage.jsx
new file mode 100644
index 00000000..91a53e1f
--- /dev/null
+++ b/src/logistration/AccountActivationMessage.jsx
@@ -0,0 +1,63 @@
+import React from 'react';
+
+import { getConfig } from '@edx/frontend-platform';
+import { FormattedMessage, injectIntl, intlShape } from '@edx/frontend-platform/i18n';
+import { Alert } from '@edx/paragon';
+import PropTypes from 'prop-types';
+
+import { ACCOUNT_ACTIVATION_MESSAGE } from './data/constants';
+import messages from './messages';
+
+const AccountActivationMessage = (props) => {
+ const { intl, messageType } = props;
+ const variant = messageType === ACCOUNT_ACTIVATION_MESSAGE.ERROR ? 'danger' : messageType;
+
+ let activationMessage;
+ let heading;
+
+ switch (messageType) {
+ case ACCOUNT_ACTIVATION_MESSAGE.SUCCESS: {
+ heading = intl.formatMessage(messages['authn.account.activation.success.message.title']);
+ activationMessage = intl.formatMessage(messages['authn.account.activation.success.message']);
+ break;
+ }
+ case ACCOUNT_ACTIVATION_MESSAGE.INFO: {
+ activationMessage = intl.formatMessage(messages['authn.account.already.activated.message']);
+ break;
+ }
+ case ACCOUNT_ACTIVATION_MESSAGE.ERROR: {
+ const supportLink = (
+
diff --git a/src/logistration/data/constants.js b/src/logistration/data/constants.js
index 342730dd..1f0c77f7 100644
--- a/src/logistration/data/constants.js
+++ b/src/logistration/data/constants.js
@@ -1,3 +1,10 @@
export const INACTIVE_USER = 'inactive-user';
export const INTERNAL_SERVER_ERROR = 'internal-server-error';
export const NON_COMPLIANT_PASSWORD_EXCEPTION = 'NonCompliantPasswordException';
+
+// Account Activation Message
+export const ACCOUNT_ACTIVATION_MESSAGE = {
+ INFO: 'info',
+ SUCCESS: 'success',
+ ERROR: 'error',
+};
diff --git a/src/logistration/messages.jsx b/src/logistration/messages.jsx
index d1ca6dec..b6ddbe2e 100644
--- a/src/logistration/messages.jsx
+++ b/src/logistration/messages.jsx
@@ -216,6 +216,32 @@ const messages = defineMessages({
defaultMessage: 'Sign in with your company or school',
description: 'Company or school login link text.',
},
+ // Account Activation Strings
+ 'authn.account.activation.success.message.title': {
+ id: 'authn.account.activation.success.message.title',
+ defaultMessage: 'Success! You have activated your account.',
+ description: 'Account Activation success message title',
+ },
+ 'authn.account.activation.success.message': {
+ id: 'authn.account.activation.success.message',
+ defaultMessage: 'You will now receive email updates and alerts from us related to the courses you are enrolled in. Sign In to continue.',
+ description: 'Message show to learners when their account has been activated successfully',
+ },
+ 'authn.account.already.activated.message': {
+ id: 'authn.account.already.activated.message',
+ defaultMessage: 'This account has already been activated.',
+ description: 'Message shown when learner account has already been activated',
+ },
+ 'authn.account.activation.error.message.title': {
+ id: 'authn.account.activation.error.message.title',
+ defaultMessage: 'Your account could not be activated',
+ description: 'Account Activation error message title',
+ },
+ 'authn.account.activation.support.link': {
+ id: 'authn.account.activation.support.link',
+ defaultMessage: 'contact support',
+ description: 'Link text used in account activation error message to go to learner help center',
+ },
});
export default messages;
diff --git a/src/logistration/tests/AccountActivationMessage.test.jsx b/src/logistration/tests/AccountActivationMessage.test.jsx
new file mode 100644
index 00000000..be0b5bbb
--- /dev/null
+++ b/src/logistration/tests/AccountActivationMessage.test.jsx
@@ -0,0 +1,57 @@
+import React from 'react';
+import { mount } from 'enzyme';
+
+import { injectIntl, IntlProvider } from '@edx/frontend-platform/i18n';
+
+import AccountActivationMessage from '../AccountActivationMessage';
+import { ACCOUNT_ACTIVATION_MESSAGE } from '../data/constants';
+
+const IntlAccountActivationMessage = injectIntl(AccountActivationMessage);
+
+describe('AccountActivationMessage', () => {
+ it('should match account already activated message', () => {
+ const accountActivationMessage = mount(
+