Skip to content

Commit 220845b

Browse files
committed
Merge branch 'dev' of github.com:topcoder-platform/challenge-api into dev
2 parents 0a4cdf9 + 644226a commit 220845b

File tree

6 files changed

+45
-5
lines changed

6 files changed

+45
-5
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ builddeploy_steps: &builddeploy_steps
4545
source awsenvconf
4646
./buildenv.sh -e $DEPLOY_ENV -b ${LOGICAL_ENV}-${APPNAME}-deployvar
4747
source buildenvvar
48-
./master_deploy.sh -d ECS -e $DEPLOY_ENV -t latest -s ${LOGICAL_ENV}-global-appvar,${LOGICAL_ENV}-${APPNAME}-appvar -i ${APPNAME}
48+
./master_deploy.sh -d ECS -e $DEPLOY_ENV -t latest -s ${LOGICAL_ENV}-global-appvar,${LOGICAL_ENV}-${APPNAME}-appvar -i ${APPNAME} -p FARGATE
4949
jobs:
5050
# Build & Deploy against development backend
5151
"build-dev":

.github/workflows/code_reviewer.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: AI PR Reviewer
2+
3+
on:
4+
pull_request:
5+
types:
6+
- opened
7+
- synchronize
8+
permissions:
9+
pull-requests: write
10+
jobs:
11+
tc-ai-pr-review:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Checkout Repo
15+
uses: actions/checkout@v3
16+
17+
- name: TC AI PR Reviewer
18+
uses: topcoder-platform/tc-ai-pr-reviewer@master
19+
with:
20+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # The GITHUB_TOKEN is there by default so you just need to keep it like it is and not necessarily need to add it as secret as it will throw an error. [More Details](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret)
21+
LAB45_API_KEY: ${{ secrets.LAB45_API_KEY }}
22+
exclude: "**/*.json, **/*.md, **/*.jpg, **/*.png, **/*.jpeg, **/*.bmp, **/*.webp" # Optional: exclude patterns separated by commas

app-constants.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const UserRoles = {
99
Manager: "Connect Manager",
1010
User: "Topcoder User",
1111
SelfServiceCustomer: "Self-Service Customer",
12+
ProjectManager: "Project Manager",
1213
};
1314

1415
const prizeSetTypes = {

src/common/helper.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const elasticsearch = require("elasticsearch");
2222

2323
const projectHelper = require("./project-helper");
2424
const m2mHelper = require("./m2m-helper");
25-
const { hasAdminRole } = require("./role-helper");
25+
const { hasAdminRole, hasProjectManagerRole } = require("./role-helper");
2626

2727
// Bus API Client
2828
let busApiClient;
@@ -960,7 +960,7 @@ async function _ensureAccessibleForTaskChallenge(currentUser, challenge) {
960960
}
961961
const canAccesChallenge = _.isUndefined(currentUser)
962962
? false
963-
: currentUser.isMachine || hasAdminRole(currentUser) || !_.isEmpty(memberResources);
963+
: currentUser.isMachine || hasAdminRole(currentUser) || hasProjectManagerRole(currentUser) || !_.isEmpty(memberResources);
964964
if (!canAccesChallenge) {
965965
throw new errors.ForbiddenError(`You don't have access to view this challenge`);
966966
}

src/common/role-helper.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,22 @@ function hasAdminRole(authUser) {
1515
return false;
1616
}
1717

18+
/**
19+
* Check if the user has project manager role
20+
* @param {Object} authUser the user
21+
*/
22+
function hasProjectManagerRole(authUser) {
23+
if (authUser && authUser.roles) {
24+
for (const role of authUser.roles) {
25+
if (role.toLowerCase() === constants.UserRoles.ProjectManager.toLowerCase()) {
26+
return true;
27+
}
28+
}
29+
}
30+
return false;
31+
}
32+
1833
module.exports = {
1934
hasAdminRole,
35+
hasProjectManagerRole,
2036
};

src/services/ChallengeService.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const PhaseAdvancer = require("../phase-management/PhaseAdvancer");
3535
const { ChallengeDomain } = require("@topcoder-framework/domain-challenge");
3636
const { QueryDomain } = require("@topcoder-framework/domain-acl");
3737

38-
const { hasAdminRole } = require("../common/role-helper");
38+
const { hasAdminRole, hasProjectManagerRole } = require("../common/role-helper");
3939
const {
4040
enrichChallengeForResponse,
4141
sanitizeRepeatedFieldsInUpdateRequest,
@@ -152,6 +152,7 @@ async function searchChallenges(currentUser, criteria) {
152152
];
153153

154154
const _hasAdminRole = hasAdminRole(currentUser);
155+
const _hasProjectManagerRole = hasProjectManagerRole(currentUser);
155156

156157
const includedTrackIds = _.isArray(criteria.trackIds) ? criteria.trackIds : [];
157158
const includedTypeIds = _.isArray(criteria.typeIds) ? criteria.typeIds : [];
@@ -588,7 +589,7 @@ async function searchChallenges(currentUser, criteria) {
588589
// FIXME: Tech Debt
589590
let excludeTasks = true;
590591
// if you're an admin or m2m, security rules wont be applied
591-
if (currentUser && (_hasAdminRole || _.get(currentUser, "isMachine", false))) {
592+
if (currentUser && (_hasAdminRole || _hasProjectManagerRole || _.get(currentUser, "isMachine", false))) {
592593
excludeTasks = false;
593594
}
594595

0 commit comments

Comments
 (0)