Skip to content

Commit e042c96

Browse files
authored
Merge pull request #4512 from topcoder-platform/issue-4380
Issue #4380 - Fix challenge register/unregister
2 parents 09e64ae + fd48f94 commit e042c96

File tree

5 files changed

+73
-9
lines changed

5 files changed

+73
-9
lines changed

config/default.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,4 +401,9 @@ module.exports = {
401401
TC_EDU_ARTICLES_PATH: '/articles',
402402
TC_EDU_SEARCH_PATH: '/search',
403403
TC_EDU_SEARCH_BAR_MAX_RESULTS_EACH_GROUP: 3,
404+
405+
ENV: {
406+
HOST: process.env.HOST,
407+
PORT: process.env.PORT,
408+
},
404409
};

src/server/index.js

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Application from 'shared';
99
import config from 'config';
1010
import express from 'express';
1111
import fetch from 'isomorphic-fetch';
12-
import { logger } from 'topcoder-react-lib';
12+
import { logger, services } from 'topcoder-react-lib';
1313
import fs from 'fs';
1414
import moment from 'moment';
1515
import path from 'path';
@@ -145,6 +145,69 @@ async function onExpressJsSetup(server) {
145145
tcCommunitiesDemoApi,
146146
);
147147

148+
// Get roleId by name
149+
server.use(
150+
'/community-app-assets/api/challenges/roleId',
151+
async (req, res, next) => {
152+
let tokenM2M = '';
153+
try {
154+
tokenM2M = await services.api.getTcM2mToken();
155+
} catch (err) {
156+
logger.error('proxyApi-roleId-getTcM2mToken : ', err);
157+
}
158+
159+
const params = {
160+
name: req.query.name,
161+
isActive: true,
162+
};
163+
const url = `${config.API.V5}/resource-roles?${qs.stringify(params)}`;
164+
try {
165+
let data = await fetch(url, {
166+
headers: { Authorization: `Bearer ${tokenM2M}` },
167+
});
168+
data = await data.text();
169+
res.send(data);
170+
} catch (err) {
171+
next(err);
172+
}
173+
},
174+
);
175+
176+
// Get registrants from challenge
177+
server.use(
178+
'/community-app-assets/api/challenges/:challengeId/registrants',
179+
async (req, res, next) => {
180+
let tokenM2M = '';
181+
let roleId = '';
182+
try {
183+
tokenM2M = await services.api.getTcM2mToken();
184+
} catch (err) {
185+
logger.error('proxyApi-registrants-getTcM2mToken : ', err);
186+
}
187+
188+
try {
189+
roleId = await services.challenge.getService().getRoleId('Submitter');
190+
} catch (err) {
191+
logger.error('proxyApi-registrants-getRoleId : ', err);
192+
}
193+
194+
const params = {
195+
challengeId: req.params.challengeId,
196+
roleId,
197+
};
198+
const url = `${config.API.V5}/resources?${qs.stringify(params)}`;
199+
try {
200+
let data = await fetch(url, {
201+
headers: { Authorization: `Bearer ${tokenM2M}` },
202+
});
203+
data = await data.text();
204+
res.send(data);
205+
} catch (err) {
206+
next(err);
207+
}
208+
},
209+
);
210+
148211
server.use(
149212
'/community-app-assets/api/edit-contentful-entry/:id',
150213
(req, res) => res.redirect(`${CMS_BASE_URL}/entries/${req.params.id}`),

src/shared/containers/SubmissionManagement/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ class SubmissionManagementPageContainer extends React.Component {
6565
showModal,
6666
toBeDeletedId,
6767
} = this.props;
68-
const isRegistered = registrants.find(r => _.toString(r.handle) === _.toString(handle));
68+
const isRegistered = registrants.find(r => _.toString(r.memberHandle) === _.toString(handle));
6969
if (!isRegistered) return <AccessDenied redirectLink={`${challengesUrl}/${challenge.id}`} cause={ACCESS_DENIED_REASON.HAVE_NOT_SUBMITTED_TO_THE_CHALLENGE} />;
7070

7171
const isEmpty = _.isEmpty(challenge);

src/shared/containers/SubmissionPage.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class SubmissionsPageContainer extends React.Component {
5353

5454
render() {
5555
const { registrants, handle, challengeId } = this.props;
56-
const isRegistered = registrants.find(r => _.toString(r.handle) === _.toString(handle));
56+
const isRegistered = registrants.find(r => _.toString(r.memberHandle) === _.toString(handle));
5757
if (!isRegistered) {
5858
return (
5959
<React.Fragment>

src/shared/containers/challenge-detail/index.jsx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,8 @@ function getOgImage(challenge, challengeTypes) {
112112
}
113113
}
114114

115-
function isRegistered(details, registrants, handle) {
116-
if (details && details.roles && details.roles.includes('Submitter')) {
117-
return true;
118-
}
119-
if (_.find(registrants, r => _.toString(r.handle) === _.toString(handle))) {
115+
function isRegistered(registrants, handle) {
116+
if (_.find(registrants, r => _.toString(r.memberHandle) === _.toString(handle))) {
120117
return true;
121118
}
122119
return false;
@@ -398,7 +395,6 @@ class ChallengeDetailPageContainer extends React.Component {
398395
const isLegacyMM = isMM(challenge) && Boolean(challenge.roundId);
399396

400397
const hasRegistered = isRegistered(
401-
challenge.userDetails,
402398
challenge.registrants,
403399
(auth.user || {}).handle,
404400
);

0 commit comments

Comments
 (0)