diff --git a/config/default.js b/config/default.js
index 7de679aec0..0db54cbc36 100644
--- a/config/default.js
+++ b/config/default.js
@@ -401,4 +401,9 @@ module.exports = {
TC_EDU_ARTICLES_PATH: '/articles',
TC_EDU_SEARCH_PATH: '/search',
TC_EDU_SEARCH_BAR_MAX_RESULTS_EACH_GROUP: 3,
+
+ ENV: {
+ HOST: process.env.HOST,
+ PORT: process.env.PORT,
+ },
};
diff --git a/src/server/index.js b/src/server/index.js
index 062cb1449c..c8da5ea563 100644
--- a/src/server/index.js
+++ b/src/server/index.js
@@ -9,7 +9,7 @@ import Application from 'shared';
import config from 'config';
import express from 'express';
import fetch from 'isomorphic-fetch';
-import { logger } from 'topcoder-react-lib';
+import { logger, services } from 'topcoder-react-lib';
import fs from 'fs';
import moment from 'moment';
import path from 'path';
@@ -145,6 +145,69 @@ async function onExpressJsSetup(server) {
tcCommunitiesDemoApi,
);
+ // Get roleId by name
+ server.use(
+ '/community-app-assets/api/challenges/roleId',
+ async (req, res, next) => {
+ let tokenM2M = '';
+ try {
+ tokenM2M = await services.api.getTcM2mToken();
+ } catch (err) {
+ logger.error('proxyApi-roleId-getTcM2mToken : ', err);
+ }
+
+ const params = {
+ name: req.query.name,
+ isActive: true,
+ };
+ const url = `${config.API.V5}/resource-roles?${qs.stringify(params)}`;
+ try {
+ let data = await fetch(url, {
+ headers: { Authorization: `Bearer ${tokenM2M}` },
+ });
+ data = await data.text();
+ res.send(data);
+ } catch (err) {
+ next(err);
+ }
+ },
+ );
+
+ // Get registrants from challenge
+ server.use(
+ '/community-app-assets/api/challenges/:challengeId/registrants',
+ async (req, res, next) => {
+ let tokenM2M = '';
+ let roleId = '';
+ try {
+ tokenM2M = await services.api.getTcM2mToken();
+ } catch (err) {
+ logger.error('proxyApi-registrants-getTcM2mToken : ', err);
+ }
+
+ try {
+ roleId = await services.challenge.getService().getRoleId('Submitter');
+ } catch (err) {
+ logger.error('proxyApi-registrants-getRoleId : ', err);
+ }
+
+ const params = {
+ challengeId: req.params.challengeId,
+ roleId,
+ };
+ const url = `${config.API.V5}/resources?${qs.stringify(params)}`;
+ try {
+ let data = await fetch(url, {
+ headers: { Authorization: `Bearer ${tokenM2M}` },
+ });
+ data = await data.text();
+ res.send(data);
+ } catch (err) {
+ next(err);
+ }
+ },
+ );
+
server.use(
'/community-app-assets/api/edit-contentful-entry/:id',
(req, res) => res.redirect(`${CMS_BASE_URL}/entries/${req.params.id}`),
diff --git a/src/shared/containers/SubmissionManagement/index.jsx b/src/shared/containers/SubmissionManagement/index.jsx
index 0062cba9c3..b849323beb 100644
--- a/src/shared/containers/SubmissionManagement/index.jsx
+++ b/src/shared/containers/SubmissionManagement/index.jsx
@@ -65,7 +65,7 @@ class SubmissionManagementPageContainer extends React.Component {
showModal,
toBeDeletedId,
} = this.props;
- const isRegistered = registrants.find(r => _.toString(r.handle) === _.toString(handle));
+ const isRegistered = registrants.find(r => _.toString(r.memberHandle) === _.toString(handle));
if (!isRegistered) return ;
const isEmpty = _.isEmpty(challenge);
diff --git a/src/shared/containers/SubmissionPage.jsx b/src/shared/containers/SubmissionPage.jsx
index 592e89937a..4505291471 100644
--- a/src/shared/containers/SubmissionPage.jsx
+++ b/src/shared/containers/SubmissionPage.jsx
@@ -53,7 +53,7 @@ class SubmissionsPageContainer extends React.Component {
render() {
const { registrants, handle, challengeId } = this.props;
- const isRegistered = registrants.find(r => _.toString(r.handle) === _.toString(handle));
+ const isRegistered = registrants.find(r => _.toString(r.memberHandle) === _.toString(handle));
if (!isRegistered) {
return (
diff --git a/src/shared/containers/challenge-detail/index.jsx b/src/shared/containers/challenge-detail/index.jsx
index 63013b6476..b494f53ade 100644
--- a/src/shared/containers/challenge-detail/index.jsx
+++ b/src/shared/containers/challenge-detail/index.jsx
@@ -112,11 +112,8 @@ function getOgImage(challenge, challengeTypes) {
}
}
-function isRegistered(details, registrants, handle) {
- if (details && details.roles && details.roles.includes('Submitter')) {
- return true;
- }
- if (_.find(registrants, r => _.toString(r.handle) === _.toString(handle))) {
+function isRegistered(registrants, handle) {
+ if (_.find(registrants, r => _.toString(r.memberHandle) === _.toString(handle))) {
return true;
}
return false;
@@ -398,7 +395,6 @@ class ChallengeDetailPageContainer extends React.Component {
const isLegacyMM = isMM(challenge) && Boolean(challenge.roundId);
const hasRegistered = isRegistered(
- challenge.userDetails,
challenge.registrants,
(auth.user || {}).handle,
);