Skip to content

Commit 81f83d7

Browse files
committed
include email in the response of helper method
1 parent 7adb853 commit 81f83d7

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

src/common/helper.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,26 +176,30 @@ async function getMemberById (id) {
176176
* @param {String} handle The member handle
177177
* @returns {Promise<void>}
178178
*/
179-
async function getMemberIdByHandle (handle) {
179+
async function getMemberDetailsByHandle (handle) {
180180
try {
181181
// logger.warn(`getMemberIdByHandle ${handle}`)
182182
const profile = await MemberProfile.query('handleLower').eq(_.toLower(handle)).exec().then(r => r[0])
183-
return profile.userId
183+
return { memberId: profile.userId, email: profile.email }
184184
} catch (e) {
185185
// fall back to v3 api...
186-
logger.warn(`Get MemberID by Handle from Dynamo Failed, trying v3 Members API. Error: ${JSON.stringify(e)}`)
187-
return getMemberIdByHandleFromV3Members(handle)
186+
logger.warn(`Get Member by Handle from Dynamo Failed, trying v3 Members API. Error: ${JSON.stringify(e)}`)
187+
return getMemberDetailsByHandleFromV3Members(handle)
188188
}
189189
}
190190

191-
async function getMemberIdByHandleFromV3Members (handle) {
191+
async function getMemberDetailsByHandleFromV3Members (handle) {
192192
let memberId
193+
let email
193194
try {
194-
logger.warn(`getMemberIdByHandle ${handle} from v5`)
195+
logger.warn(`getMemberByHandle ${handle} from v5`)
195196
const res = await getRequest(`${config.MEMBER_API_URL}/${handle}`)
196197
if (_.get(res, 'body.userId')) {
197198
memberId = String(res.body.userId)
198199
}
200+
if (_.get(res, 'body.email')) {
201+
email = String(res.body.email)
202+
}
199203
// handle return from v3 API, handle and memberHandle are the same under case-insensitive condition
200204
handle = _.get(res, 'body.handle')
201205
} catch (error) {
@@ -209,7 +213,7 @@ async function getMemberIdByHandleFromV3Members (handle) {
209213
throw new errors.BadRequestError(`User with handle: ${handle} doesn't exist`)
210214
}
211215

212-
return memberId
216+
return { memberId, email }
213217
}
214218

215219
/**
@@ -481,7 +485,7 @@ module.exports = {
481485
wrapExpress,
482486
autoWrapExpress,
483487
getMemberInfoById,
484-
getMemberIdByHandle,
488+
getMemberDetailsByHandle,
485489
checkIfExists,
486490
hasAdminRole,
487491
getById,

src/models/MemberProfile.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ const schema = new Schema({
2323
name: 'handleLower-index',
2424
project: true
2525
}
26+
},
27+
email: {
28+
type: String
2629
}
2730
},
2831
{

src/services/ResourceService.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ async function init (currentUser, challengeId, resource, isCreated) {
245245

246246
// get member information using v3 API
247247
const handle = resource.memberHandle
248-
const memberId = await helper.getMemberIdByHandle(resource.memberHandle)
248+
const { memberId, email } = await helper.getMemberDetailsByHandle(resource.memberHandle)
249249

250250
// check if the resource is reviewer role and has already made a submission in the challenge
251251
if (resource.roleId === config.REVIEWER_RESOURCE_ROLE_ID || resource.roleId === config.ITERATIVE_REVIEWER_RESOURCE_ROLE_ID) {
@@ -284,11 +284,11 @@ async function init (currentUser, challengeId, resource, isCreated) {
284284
}
285285
// skip phase dependency checks for tasks
286286
if (_.get(challenge, 'task.isTask', false)) {
287-
return { resources, memberId, handle }
287+
return { resources, memberId, handle, email, challenge }
288288
}
289289
// bypass phase dependency checks if the caller is an m2m/admin
290290
if (currentUser.isMachine || helper.hasAdminRole(currentUser)) {
291-
return { resources, memberId, handle }
291+
return { resources, memberId, handle, email, challenge }
292292
}
293293
// check phases dependencies
294294
const dependencies = await ResourceRolePhaseDependencyService.getDependencies({ resourceRoleId: resource.roleId })
@@ -316,7 +316,7 @@ async function init (currentUser, challengeId, resource, isCreated) {
316316
})
317317

318318
// return resources and the member id
319-
return { resources, memberId, handle }
319+
return { resources, memberId, handle, email, challenge }
320320
}
321321

322322
/**

0 commit comments

Comments
 (0)