From a073aaf2de66a395c93a82d263a1f98a54938d81 Mon Sep 17 00:00:00 2001 From: imcaizheng Date: Tue, 5 Jan 2021 00:27:42 +0800 Subject: [PATCH 1/3] update auth0 configuration --- README.md | 2 +- config/default.js | 2 +- config/test.js | 2 +- docker/sample.api.env | 2 +- src/common/helper.js | 50 +++++++++++++++++++++---------------------- 5 files changed, 28 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 14625a85..c161dd17 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ The following parameters can be set in config files or in env variables: - `AUTH0_URL`: Auth0 URL, used to get TC M2M token - `AUTH0_AUDIENCE`: Auth0 audience, used to get TC M2M token -- `AUTH0_AUDIENCE_FOR_BUS_API`: Auth0 audience, used to get TC M2M token to be used in bus api client +- `AUTH0_AUDIENCE_UBAHN`: Auth0 audience for U-Bahn - `TOKEN_CACHE_TIME`: Auth0 token cache time, used to get TC M2M token - `AUTH0_CLIENT_ID`: Auth0 client id, used to get TC M2M token - `AUTH0_CLIENT_SECRET`: Auth0 client secret, used to get TC M2M token diff --git a/config/default.js b/config/default.js index 4aafc86e..d726ca58 100644 --- a/config/default.js +++ b/config/default.js @@ -8,7 +8,7 @@ module.exports = { VALID_ISSUERS: process.env.VALID_ISSUERS || '["https://api.topcoder-dev.com", "https://api.topcoder.com", "https://topcoder-dev.auth0.com/", "https://auth.topcoder-dev.com/"]', AUTH0_URL: process.env.AUTH0_URL, AUTH0_AUDIENCE: process.env.AUTH0_AUDIENCE, - AUTH0_AUDIENCE_FOR_BUS_API: process.env.AUTH0_AUDIENCE_FOR_BUS_API, + AUTH0_AUDIENCE_UBAHN: process.env.AUTH0_AUDIENCE_UBAHN, TOKEN_CACHE_TIME: process.env.TOKEN_CACHE_TIME, AUTH0_CLIENT_ID: process.env.AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRET: process.env.AUTH0_CLIENT_SECRET, diff --git a/config/test.js b/config/test.js index baa8e7f8..761b6ada 100644 --- a/config/test.js +++ b/config/test.js @@ -2,7 +2,7 @@ module.exports = { LOG_LEVEL: process.env.LOG_LEVEL || 'info', AUTH0_URL: 'http://example.com', AUTH0_AUDIENCE: 'http://example.com', - AUTH0_AUDIENCE_FOR_BUS_API: 'http://example.com', + AUTH0_AUDIENCE_UBAHN: 'http://example.com', AUTH0_CLIENT_ID: 'fake_id', AUTH0_CLIENT_SECRET: 'fake_secret' } diff --git a/docker/sample.api.env b/docker/sample.api.env index f7ed6a2d..2535e1d1 100644 --- a/docker/sample.api.env +++ b/docker/sample.api.env @@ -3,7 +3,7 @@ ES_HOST= AUTH0_URL= AUTH0_AUDIENCE= -AUTH0_AUDIENCE_FOR_BUS_API= +AUTH0_AUDIENCE_UBAHN= TOKEN_CACHE_TIME=500000 AUTH0_CLIENT_ID= AUTH0_CLIENT_SECRET= diff --git a/src/common/helper.js b/src/common/helper.js index 7ee55092..9853c4a1 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -23,13 +23,13 @@ AWS.config.region = config.esConfig.AWS_REGION const m2mAuth = require('tc-core-library-js').auth.m2m -// const m2m = m2mAuth(_.pick(config, ['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME', 'AUTH0_PROXY_SERVER_URL'])) const m2m = m2mAuth(_.pick(config, ['AUTH0_URL', 'AUTH0_AUDIENCE', 'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'AUTH0_PROXY_SERVER_URL'])) -const topcoderM2M = m2mAuth({ - AUTH0_AUDIENCE: config.AUTH0_AUDIENCE_FOR_BUS_API, +const m2mForUbahn = m2mAuth({ + AUTH0_AUDIENCE: config.AUTH0_AUDIENCE_UBAHN, ..._.pick(config, ['AUTH0_URL', 'TOKEN_CACHE_TIME', 'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'AUTH0_PROXY_SERVER_URL']) -}) +} +) let busApiClient @@ -42,10 +42,8 @@ function getBusApiClient () { if (busApiClient) { return busApiClient } - busApiClient = busApi({ - AUTH0_AUDIENCE: config.AUTH0_AUDIENCE_FOR_BUS_API, - ..._.pick(config, ['AUTH0_URL', 'TOKEN_CACHE_TIME', 'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'BUSAPI_URL', 'KAFKA_ERROR_TOPIC', 'AUTH0_PROXY_SERVER_URL']) - }) + busApiClient = busApi(_.pick(config, ['AUTH0_URL', 'AUTH0_AUDIENCE', 'TOKEN_CACHE_TIME', 'AUTH0_CLIENT_ID', 'AUTH0_CLIENT_SECRET', 'BUSAPI_URL', 'KAFKA_ERROR_TOPIC', 'AUTH0_PROXY_SERVER_URL']) + ) return busApiClient } @@ -210,16 +208,16 @@ function getESClient () { * Function to get M2M token * @returns {Promise} */ -const getM2Mtoken = async () => { +const getM2MToken = async () => { return await m2m.getMachineToken(config.AUTH0_CLIENT_ID, config.AUTH0_CLIENT_SECRET) } /* - * Function to get M2M token to access topcoder resources(e.g. /v3/users) + * Function to get M2M token for U-Bhan * @returns {Promise} */ -const getTopcoderM2MToken = async () => { - return await topcoderM2M.getMachineToken(config.AUTH0_CLIENT_ID, config.AUTH0_CLIENT_SECRET) +const getM2MUbahnToken = async () => { + return await m2mForUbahn.getMachineToken(config.AUTH0_CLIENT_ID, config.AUTH0_CLIENT_SECRET) } /** @@ -247,7 +245,7 @@ function encodeQueryString (queryObj, nesting = '') { * @returns {String} user id. */ async function getUserIds (userId) { - const token = await getM2Mtoken() + const token = await getM2MToken() const q = { enrich: true, externalProfile: { @@ -320,7 +318,7 @@ function isDocumentMissingException (err) { async function getProjects (currentUser, criteria = {}) { let token if (currentUser.hasManagePermission || currentUser.isMachine) { - const m2mToken = await getM2Mtoken() + const m2mToken = await getM2MToken() token = `Bearer ${m2mToken}` } else { token = currentUser.jwtToken @@ -351,7 +349,7 @@ async function getProjects (currentUser, criteria = {}) { * @returns {Object} the user */ async function getTopcoderUserById (userId) { - const token = await getTopcoderM2MToken() + const token = await getM2MToken() const res = await request .get(config.TOPCODER_USERS_API) .query({ filter: `id=${userId}` }) @@ -371,7 +369,7 @@ async function getTopcoderUserById (userId) { * @returns the request result */ async function getUserById (userId, enrich) { - const token = await getM2Mtoken() + const token = await getM2MToken() const res = await request .get(`${config.TC_API}/users/${userId}` + (enrich ? '?enrich=true' : '')) .set('Authorization', `Bearer ${token}`) @@ -394,7 +392,7 @@ async function getUserById (userId, enrich) { * @returns the request result */ async function createUbhanUser ({ handle, firstName, lastName }) { - const token = await getM2Mtoken() + const token = await getM2MUbahnToken() const res = await request .post(`${config.TC_API}/users`) .set('Authorization', `Bearer ${token}`) @@ -411,7 +409,7 @@ async function createUbhanUser ({ handle, firstName, lastName }) { * @param {Object} data the profile data */ async function createUserExternalProfile (userId, { organizationId, externalId }) { - const token = await getM2Mtoken() + const token = await getM2MUbahnToken() const res = await request .post(`${config.TC_API}/users/${userId}/externalProfiles`) .set('Authorization', `Bearer ${token}`) @@ -427,7 +425,7 @@ async function createUserExternalProfile (userId, { organizationId, externalId } * @returns the request result */ async function getMembers (handles) { - const token = await getM2Mtoken() + const token = await getM2MToken() const handlesStr = _.map(handles, handle => { return '%22' + handle.toLowerCase() + '%22' }).join(',') @@ -451,7 +449,7 @@ async function getMembers (handles) { async function getProjectById (currentUser, id) { let token if (currentUser.hasManagePermission || currentUser.isMachine) { - const m2mToken = await getM2Mtoken() + const m2mToken = await getM2MToken() token = `Bearer ${m2mToken}` } else { token = currentUser.jwtToken @@ -484,7 +482,7 @@ async function getProjectById (currentUser, id) { * @returns the request result */ async function getTopcoderSkills (criteria) { - const token = await getM2Mtoken() + const token = await getM2MToken() try { const res = await request .get(`${config.TC_API}/skills`) @@ -516,7 +514,7 @@ async function getTopcoderSkills (criteria) { * @returns the request result */ async function getSkillById (skillId) { - const token = await getM2Mtoken() + const token = await getM2MToken() const res = await request .get(`${config.TC_API}/skills/${skillId}`) .set('Authorization', `Bearer ${token}`) @@ -589,7 +587,7 @@ async function ensureJobById (jobId) { * @returns {Object} the user data */ async function ensureUserById (userId) { - const token = await getM2Mtoken() + const token = await getM2MToken() try { const res = await request .get(`${config.TC_API}/users/${userId}`) @@ -625,7 +623,7 @@ function getAuditM2Muser () { * @returns the result */ async function checkIsMemberOfProject (userId, projectId) { - const m2mToken = await getM2Mtoken() + const m2mToken = await getM2MToken() const res = await request .get(`${config.TC_API}/projects/${projectId}`) .set('Authorization', `Bearer ${m2mToken}`) @@ -651,8 +649,8 @@ module.exports = { } return ensureUbhanUserId({ userId }) }, - getM2Mtoken, - getTopcoderM2MToken, + getM2MToken, + getM2MUbahnToken, postEvent, getBusApiClient, isDocumentMissingException, From b4c6d933c743a975c0d813f7dd77a1a9735bffff Mon Sep 17 00:00:00 2001 From: imcaizheng Date: Tue, 5 Jan 2021 17:17:07 +0800 Subject: [PATCH 2/3] fix typo: repalce all `ubhan` with `ubahn` --- src/common/helper.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/common/helper.js b/src/common/helper.js index 9853c4a1..7512ebc0 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -391,7 +391,7 @@ async function getUserById (userId, enrich) { * @param {Object} data the user data * @returns the request result */ -async function createUbhanUser ({ handle, firstName, lastName }) { +async function createUbahnUser ({ handle, firstName, lastName }) { const token = await getM2MUbahnToken() const res = await request .post(`${config.TC_API}/users`) @@ -399,7 +399,7 @@ async function createUbhanUser ({ handle, firstName, lastName }) { .set('Content-Type', 'application/json') .set('Accept', 'application/json') .send({ handle, firstName, lastName }) - localLogger.debug({ context: 'createUbhanUser', message: `response body: ${JSON.stringify(res.body)}` }) + localLogger.debug({ context: 'createUbahnUser', message: `response body: ${JSON.stringify(res.body)}` }) return _.pick(res.body, ['id']) } @@ -556,7 +556,7 @@ async function getUserSkill (token, userId) { * @params {Object} currentUser the user who perform this operation * @returns {String} the ubhan user id */ -async function ensureUbhanUserId (currentUser) { +async function ensureUbahnUserId (currentUser) { try { return await getUserId(currentUser.userId) } catch (err) { @@ -564,7 +564,7 @@ async function ensureUbhanUserId (currentUser) { throw err } const topcoderUser = await getTopcoderUserById(currentUser.userId) - const user = await createUbhanUser(_.pick(topcoderUser, ['handle', 'firstName', 'lastName'])) + const user = await createUbahnUser(_.pick(topcoderUser, ['handle', 'firstName', 'lastName'])) await createUserExternalProfile(user.id, { organizationId: config.ORG_ID, externalId: currentUser.userId }) return user.id } @@ -647,7 +647,7 @@ module.exports = { if (userId === config.m2m.M2M_AUDIT_USER_ID) { return config.m2m.M2M_AUDIT_USER_ID } - return ensureUbhanUserId({ userId }) + return ensureUbahnUserId({ userId }) }, getM2MToken, getM2MUbahnToken, From 7a94251007d420b2d5b0fa9ad02a77d11e9925b8 Mon Sep 17 00:00:00 2001 From: imcaizheng Date: Tue, 5 Jan 2021 17:20:51 +0800 Subject: [PATCH 3/3] fix typo elsewhere: repalce all `ubhan` with `ubahn` --- src/common/helper.js | 8 ++++---- src/services/JobService.js | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/common/helper.js b/src/common/helper.js index 7512ebc0..eec0b3e5 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -213,7 +213,7 @@ const getM2MToken = async () => { } /* - * Function to get M2M token for U-Bhan + * Function to get M2M token for U-Bahn * @returns {Promise} */ const getM2MUbahnToken = async () => { @@ -387,7 +387,7 @@ async function getUserById (userId, enrich) { } /** - * Function to create user in ubhan + * Function to create user in ubahn * @param {Object} data the user data * @returns the request result */ @@ -404,7 +404,7 @@ async function createUbahnUser ({ handle, firstName, lastName }) { } /** - * Function to create external profile for a ubhan user + * Function to create external profile for a ubahn user * @param {String} userId the user id(with uuid format) * @param {Object} data the profile data */ @@ -554,7 +554,7 @@ async function getUserSkill (token, userId) { * Fetch the user info from /v3/users and create a new user in /v5/users. * * @params {Object} currentUser the user who perform this operation - * @returns {String} the ubhan user id + * @returns {String} the ubahn user id */ async function ensureUbahnUserId (currentUser) { try { diff --git a/src/services/JobService.js b/src/services/JobService.js index bc2c27d7..90883b1f 100644 --- a/src/services/JobService.js +++ b/src/services/JobService.js @@ -188,18 +188,18 @@ async function updateJob (currentUser, id, data) { } let job = await Job.findById(id) const oldValue = job.toJSON() - const ubhanUserId = await helper.getUserId(currentUser.userId) + const ubahnUserId = await helper.getUserId(currentUser.userId) if (!currentUser.hasManagePermission && !currentUser.isMachine) { // Check whether user can update the job. // Note that there is no need to check if user is member of the project associated with the job here // because user who created the job must be the member of the project associated with the job - if (ubhanUserId !== job.createdBy) { + if (ubahnUserId !== job.createdBy) { throw new errors.ForbiddenError('You are not allowed to perform this action!') } } data.updatedAt = new Date() - data.updatedBy = ubhanUserId + data.updatedBy = ubahnUserId await job.update(data) await helper.postEvent(config.TAAS_JOB_UPDATE_TOPIC, { id, ...data }, { oldValue: oldValue })