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, );