Skip to content

Commit c731972

Browse files
authored
Merge pull request #220 from topcoder-platform/dev
Supporting Release for Connect 2.4.8
2 parents 6a5cad6 + 17b0bce commit c731972

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+2861
-1344
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ workflows:
7676
- test
7777
filters:
7878
branches:
79-
only: ['dev', 'feature/auth0-proxy-server']
79+
only: ['dev']
8080
- deployProd:
8181
requires:
8282
- test

config/custom-environment-variables.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,9 @@
4747
"AUTH0_AUDIENCE": "AUTH0_AUDIENCE",
4848
"TOKEN_CACHE_TIME" : "TOKEN_CACHE_TIME",
4949
"whitelistedOriginsForUserIdAuth": "WHITELISTED_ORIGINS_FOR_USERID_AUTH",
50-
"AUTH0_PROXY_SERVER_URL" : "AUTH0_PROXY_SERVER_URL"
50+
"AUTH0_PROXY_SERVER_URL" : "AUTH0_PROXY_SERVER_URL",
51+
"connectUrl": "CONNECT_URL",
52+
"accountsAppUrl": "ACCOUNTS_APP_URL",
53+
"inviteEmailSubject": "INVITE_EMAIL_SUBJECT",
54+
"inviteEmailSectionTitle": "INVITE_EMAIL_SECTION_TITLE"
5155
}

config/default.json

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,12 @@
5151
"AUTH0_URL": "",
5252
"TOKEN_CACHE_TIME": "",
5353
"whitelistedOriginsForUserIdAuth": "[\"https:\/\/topcoder-newauth.auth0.com\/\",\"https:\/\/api.topcoder-dev.com\"]",
54-
"AUTH0_PROXY_SERVER_URL" : ""
54+
"AUTH0_PROXY_SERVER_URL" : "",
55+
"EMAIL_INVITE_FROM_NAME":"Topcoder",
56+
"EMAIL_INVITE_FROM_EMAIL":"[email protected]",
57+
"inviteEmailSubject": "You are invited to Topcoder",
58+
"inviteEmailSectionTitle": "Project Invitation",
59+
"connectUrl":"https://connect.topcoder-dev.com",
60+
"accountsAppUrl": "https://accounts.topcoder-dev.com"
61+
5562
}

deploy.sh

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,14 @@ make_task_def(){
152152
"name": "CONNECT_PROJECTS_URL",
153153
"value": "%s"
154154
},
155+
{
156+
"name": "CONNECT_URL",
157+
"value": "%s"
158+
},
159+
{
160+
"name": "ACCOUNTS_APP_URL",
161+
"value": "%s"
162+
},
155163
{
156164
"name": "SEGMENT_ANALYTICS_KEY",
157165
"value": "%s"
@@ -195,6 +203,22 @@ make_task_def(){
195203
{
196204
"name": "AUTH0_PROXY_SERVER_URL",
197205
"value": "%s"
206+
},
207+
{
208+
"name": "EMAIL_INVITE_FROM_NAME",
209+
"value": "%s"
210+
},
211+
{
212+
"name": "EMAIL_INVITE_FROM_EMAIL",
213+
"value": "%s"
214+
},
215+
{
216+
"name": "INVITE_EMAIL_SUBJECT",
217+
"value": "%s"
218+
},
219+
{
220+
"name": "INVITE_EMAIL_SECTION_TITLE",
221+
"value": "%s"
198222
}
199223
],
200224
"portMappings": [
@@ -230,6 +254,8 @@ make_task_def(){
230254
DIRECT_PROJECT_SERVICE_ENDPOINT=$(eval "echo \$${ENV}_DIRECT_PROJECT_SERVICE_ENDPOINT")
231255
FILE_SERVICE_ENDPOINT=$(eval "echo \$${ENV}_FILE_SERVICE_ENDPOINT")
232256
CONNECT_PROJECTS_URL=$(eval "echo \$${ENV}_CONNECT_PROJECTS_URL")
257+
CONNECT_URL=$(eval "echo \$${ENV}_CONNECT_URL")
258+
ACCOUNTS_APP_URL=$(eval "echo \$${ENV}_ACCOUNTS_APP_URL")
233259
SEGMENT_ANALYTICS_KEY=$(eval "echo \$${ENV}_SEGMENT_ANALYTICS_KEY")
234260
MESSAGE_SERVICE_URL=$(eval "echo \$${ENV}_MESSAGE_SERVICE_URL")
235261
if [ "$ENV" = "PROD" ]; then
@@ -250,11 +276,14 @@ make_task_def(){
250276
KAFKA_CLIENT_CERT_KEY=$(eval "echo \$${ENV}_KAFKA_CLIENT_CERT_KEY")
251277
KAFKA_GROUP_ID=$(eval "echo \$${ENV}_KAFKA_GROUP_ID")
252278
KAFKA_URL=$(eval "echo \$${ENV}_KAFKA_URL")
253-
AUTH0_PROXY_SERVER_URL=$(eval "echo \$${ENV}_AUTH0_PROXY_SERVER_URL")
254279

255280
AUTH0_PROXY_SERVER_URL=$(eval "echo \$${ENV}_AUTH0_PROXY_SERVER_URL")
281+
EMAIL_INVITE_FROM_NAME=$(eval "echo \$${ENV}_EMAIL_INVITE_FROM_NAME")
282+
EMAIL_INVITE_FROM_EMAIL=$(eval "echo \$${ENV}_EMAIL_INVITE_FROM_EMAIL")
283+
INVITE_EMAIL_SUBJECT=$(eval "echo \$${ENV}_INVITE_EMAIL_SUBJECT")
284+
INVITE_EMAIL_SECTION_TITLE=$(eval "echo \$${ENV}_INVITE_EMAIL_SECTION_TITLE")
256285

257-
task_def=$(printf "$task_template" $1 $ACCOUNT_ID $ACCOUNT_ID $AWS_ECS_CONTAINER_NAME $ACCOUNT_ID $AWS_REGION $AWS_REPOSITORY $CIRCLE_SHA1 $2 $3 $4 $NODE_ENV $ENABLE_FILE_UPLOAD $LOG_LEVEL $CAPTURE_LOGS $LOGENTRIES_TOKEN $API_VERSION $AWS_REGION $AUTH_DOMAIN $AUTH_SECRET $VALID_ISSUERS $DB_MASTER_URL $MEMBER_SERVICE_ENDPOINT $IDENTITY_SERVICE_ENDPOINT $BUS_API_URL $MESSAGE_SERVICE_URL $SYSTEM_USER_CLIENT_ID $SYSTEM_USER_CLIENT_SECRET $PROJECTS_ES_URL $PROJECTS_ES_INDEX_NAME $RABBITMQ_URL $DIRECT_PROJECT_SERVICE_ENDPOINT $FILE_SERVICE_ENDPOINT $CONNECT_PROJECTS_URL $SEGMENT_ANALYTICS_KEY "$AUTH0_URL" "$AUTH0_AUDIENCE" $AUTH0_CLIENT_ID "$AUTH0_CLIENT_SECRET" $TOKEN_CACHE_TIME "$KAFKA_CLIENT_CERT" "$KAFKA_CLIENT_CERT_KEY" $KAFKA_GROUP_ID $KAFKA_URL "$AUTH0_PROXY_SERVER_URL" $PORT $PORT $AWS_ECS_CLUSTER $AWS_REGION $NODE_ENV)
286+
task_def=$(printf "$task_template" $1 $ACCOUNT_ID $ACCOUNT_ID $AWS_ECS_CONTAINER_NAME $ACCOUNT_ID $AWS_REGION $AWS_REPOSITORY $CIRCLE_SHA1 $2 $3 $4 $NODE_ENV $ENABLE_FILE_UPLOAD $LOG_LEVEL $CAPTURE_LOGS $LOGENTRIES_TOKEN $API_VERSION $AWS_REGION $AUTH_DOMAIN $AUTH_SECRET $VALID_ISSUERS $DB_MASTER_URL $MEMBER_SERVICE_ENDPOINT $IDENTITY_SERVICE_ENDPOINT $BUS_API_URL $MESSAGE_SERVICE_URL $SYSTEM_USER_CLIENT_ID $SYSTEM_USER_CLIENT_SECRET $PROJECTS_ES_URL $PROJECTS_ES_INDEX_NAME $RABBITMQ_URL $DIRECT_PROJECT_SERVICE_ENDPOINT $FILE_SERVICE_ENDPOINT $CONNECT_PROJECTS_URL $CONNECT_URL $ACCOUNTS_APP_URL $SEGMENT_ANALYTICS_KEY "$AUTH0_URL" "$AUTH0_AUDIENCE" $AUTH0_CLIENT_ID "$AUTH0_CLIENT_SECRET" $TOKEN_CACHE_TIME "$KAFKA_CLIENT_CERT" "$KAFKA_CLIENT_CERT_KEY" $KAFKA_GROUP_ID $KAFKA_URL "$AUTH0_PROXY_SERVER_URL" "$EMAIL_INVITE_FROM_NAME" "$EMAIL_INVITE_FROM_EMAIL" "$INVITE_EMAIL_SUBJECT" "$INVITE_EMAIL_SECTION_TITLE" $PORT $PORT $AWS_ECS_CLUSTER $AWS_REGION $NODE_ENV)
258287
}
259288

260289
push_ecr_image(){

local/mock-services/server.js

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const middlewares = jsonServer.defaults();
1414
const authMiddleware = require('./authMiddleware');
1515

1616
const members = require('./services.json').members;
17+
const roles = require('./services.json').roles;
1718

1819
server.use(middlewares);
1920

@@ -29,7 +30,12 @@ server.get('/v3/members/_search', (req, res) => {
2930
const ret = {};
3031
const splitted = single.split(':');
3132
// if the result can be parsed successfully
32-
const parsed = jsprim.parseInteger(splitted[1], { allowTrailing: true, trimWhitespace: true });
33+
let parsed = Error();
34+
try {
35+
parsed = jsprim.parseInteger(splitted[1], { allowTrailing: true, trimWhitespace: true });
36+
} catch (e) {
37+
// no-empty
38+
}
3339
if (parsed instanceof Error) {
3440
ret[splitted[0]] = splitted[1];
3541
} else {
@@ -38,6 +44,7 @@ server.get('/v3/members/_search', (req, res) => {
3844
return ret;
3945
});
4046
const userIds = _.map(criteria, 'userId');
47+
const handles = _.map(criteria, 'handle');
4148
const cloned = _.cloneDeep(members);
4249
const response = {
4350
id: 'res1',
@@ -53,13 +60,42 @@ server.get('/v3/members/_search', (req, res) => {
5360
found = _.pick(found, fields);
5461
}
5562
return found;
63+
} else if (_.indexOf(handles, single.result.content.handle) > -1) {
64+
let found = single.result.content;
65+
if (fields.length > 0) {
66+
found = _.pick(found, fields);
67+
}
68+
return found;
5669
}
5770
return null;
5871
}).filter(_.identity);
5972
response.result.metadata = { totalCount: response.result.content.length };
6073
res.status(200).json(response);
6174
});
6275

76+
// add additional search route for project members
77+
server.get('/roles', (req, res) => {
78+
const filter = _.isString(req.query.filter) ?
79+
req.query.filter.replace('%2520', ' ').replace('%20', ' ').split('=') : [];
80+
const cloned = _.cloneDeep(roles);
81+
const response = {
82+
id: 'res1',
83+
result: {
84+
success: true,
85+
status: 200,
86+
},
87+
};
88+
const role = filter ? _.find(cloned, (single) => {
89+
if (single.userId === filter[1]) {
90+
return single.roles;
91+
}
92+
return null;
93+
}) : null;
94+
95+
response.result.content = role ? role.roles : [];
96+
res.status(200).json(response);
97+
});
98+
6399
server.use(router);
64100

65101
server.listen(PORT, () => {

local/mock-services/services.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,5 +300,13 @@
300300
},
301301
"version": "v3"
302302
}
303+
],
304+
"roles": [
305+
{ "userId": "40051334", "roles": [ { "roleName": "Connect Manager" } ] },
306+
{ "userId": "40051332", "roles": [ { "roleName": "Connect Copilot" } ] },
307+
{ "userId": "40051333", "roles": [ { "roleName": "administrator" } ] },
308+
{ "userId": "40051336", "roles": [ { "roleName": "Connect Admin" }, { "roleName": "Connect Copilot" } ] },
309+
{ "userId": "40051331", "roles": [ ] },
310+
{ "userId": "40051335", "roles": [ ] }
303311
]
304312
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
--
2+
-- CREATE NEW TABLES:
3+
-- project_member_invites
4+
--
5+
6+
--
7+
-- project_member_invites
8+
--
9+
10+
CREATE TABLE project_member_invites (
11+
id bigint NOT NULL,
12+
"projectId" bigint,
13+
"userId" bigint,
14+
email character varying(255),
15+
role character varying(255) NOT NULL,
16+
status character varying(255) NOT NULL,
17+
"createdAt" timestamp with time zone,
18+
"updatedAt" timestamp with time zone,
19+
"deletedAt" timestamp with time zone,
20+
"createdBy" integer NOT NULL,
21+
"updatedBy" integer NOT NULL,
22+
"deletedBy" bigint
23+
);
24+
25+
ALTER TABLE ONLY project_member_invites
26+
ADD CONSTRAINT project_member_invites_pkey PRIMARY KEY (id);
27+
28+
CREATE SEQUENCE project_member_invites_id_seq
29+
START WITH 1
30+
INCREMENT BY 1
31+
NO MINVALUE
32+
NO MAXVALUE
33+
CACHE 1;
34+
35+
ALTER SEQUENCE project_member_invites_id_seq OWNED BY project_member_invites.id;
36+
37+
ALTER TABLE project_member_invites
38+
ALTER COLUMN id SET DEFAULT nextval('project_member_invites_id_seq');
39+
40+
ALTER TABLE ONLY project_member_invites
41+
ADD CONSTRAINT "project_member_invites_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES projects(id) ON UPDATE CASCADE ON DELETE CASCADE;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
--
2+
-- UPDATE EXISTING TABLES:
3+
-- product_templates:
4+
-- added column `subCategory`
5+
6+
--
7+
-- product_templates
8+
9+
-- Add new column
10+
ALTER TABLE product_templates ADD COLUMN "subCategory" character varying(45);
11+
-- Update new column
12+
UPDATE product_templates SET "subCategory"="category" WHERE "subCategory" is NULL;
13+
-- Set not null
14+
ALTER TABLE product_templates ALTER COLUMN "subCategory" SET NOT NULL;

0 commit comments

Comments
 (0)