diff --git a/controllers/users.js b/controllers/users.js index bc4dbfc78..0fc9a105b 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -372,10 +372,21 @@ const generateUsername = async (req, res) => { const getSelfDetails = async (req, res) => { try { if (req.userData) { + const id = req.params.id; + const params = req.query.params; const user = await dataAccess.retrieveUsers({ userdata: req.userData, }); - return res.send(user); + if (params === undefined) { + if (id === user.id) { + return res.send(user); + } + } + const paramsArray = params.split(","); + const commonKeysObject = Object.fromEntries(paramsArray.map((key) => [key, user[key]])); + if (id === user.id) { + return res.send(commonKeysObject); + } } return res.boom.notFound("User doesn't exist"); } catch (error) { diff --git a/routes/users.js b/routes/users.js index 605500305..a3d11b393 100644 --- a/routes/users.js +++ b/routes/users.js @@ -18,7 +18,7 @@ router.post("/verify", authenticate, users.verifyUser); router.get("/userId/:userId", users.getUserById); router.patch("/self", authenticate, userValidator.updateUser, users.updateSelf); router.get("/", userValidator.getUsers, users.getUsers); -router.get("/self", authenticate, users.getSelfDetails); +router.get("/:id", authenticate, users.getSelfDetails); router.get("/isDeveloper", authenticate, users.isDeveloper); router.get("/isUsernameAvailable/:username", authenticate, users.getUsernameAvailabilty); router.get("/username", authenticate, userValidator.validateGenerateUsernameQuery, users.generateUsername); diff --git a/test/integration/external-accounts.test.js b/test/integration/external-accounts.test.js index 158b6bac0..a7509c342 100644 --- a/test/integration/external-accounts.test.js +++ b/test/integration/external-accounts.test.js @@ -448,9 +448,10 @@ describe("External Accounts", function () { describe("PATCH /external-accounts/link/:token", function () { let newUserJWT; + let userId; beforeEach(async function () { - const userId = await addUser(userData[3]); + userId = await addUser(userData[3]); newUserJWT = authService.generateAuthToken({ userId }); await externalAccountsModel.addExternalAccountData(externalAccountData[2]); await externalAccountsModel.addExternalAccountData(externalAccountData[3]); @@ -529,7 +530,7 @@ describe("External Accounts", function () { await externalAccountsModel.addExternalAccountData(externalAccountData[2]); const getUserResponseBeforeUpdate = await chai .request(app) - .get("/users/self") + .get(`/users/${userId}`) .set("cookie", `${cookieName}=${newUserJWT}`); expect(getUserResponseBeforeUpdate).to.have.status(200); @@ -547,7 +548,7 @@ describe("External Accounts", function () { const updatedUserDetails = await chai .request(app) - .get("/users/self") + .get(`/users/${userId}`) .set("cookie", `${cookieName}=${newUserJWT}`); expect(updatedUserDetails.body.roles.in_discord).to.equal(true); diff --git a/test/integration/restricted.test.js b/test/integration/restricted.test.js index aa3b7e5df..e5ec49ae1 100644 --- a/test/integration/restricted.test.js +++ b/test/integration/restricted.test.js @@ -20,9 +20,10 @@ describe("checkRestrictedUser", function () { let restrictedJwt; let unrestrictedJwt; let fetchStub; + let restrictedUserId; before(async function () { - const restrictedUserId = await addUser(restrictedUser); + restrictedUserId = await addUser(restrictedUser); const unrestrictedUserId = await addUser(unrestrictedUser); restrictedJwt = authService.generateAuthToken({ userId: restrictedUserId }); unrestrictedJwt = authService.generateAuthToken({ userId: unrestrictedUserId }); @@ -44,7 +45,7 @@ describe("checkRestrictedUser", function () { it("should allow GET request coming from restricted user", function (done) { chai .request(app) - .get("/users/self") + .get(`/users/${restrictedUserId}`) .set("cookie", `${cookieName}=${restrictedJwt}`) .end((err, res) => { if (err) { diff --git a/test/integration/users.test.js b/test/integration/users.test.js index d613ff2f9..eb133086d 100644 --- a/test/integration/users.test.js +++ b/test/integration/users.test.js @@ -66,7 +66,9 @@ describe("Users", function () { }); describe("PATCH /users/self", function () { - beforeEach(function () { + let userId; + + beforeEach(async function () { fetchStub = Sinon.stub(global, "fetch"); fetchStub.returns( Promise.resolve({ @@ -74,6 +76,7 @@ describe("Users", function () { json: () => Promise.resolve(getDiscordMembers), }) ); + userId = await addUser(newUser); }); afterEach(function () { @@ -166,7 +169,7 @@ describe("Users", function () { const getUserResponseBeforeUpdate = await chai .request(app) - .get("/users/self") + .get(`/users/${userId}`) .set("cookie", `${cookieName}=${newUserJwt}`); expect(getUserResponseBeforeUpdate).to.have.status(200); @@ -187,7 +190,7 @@ describe("Users", function () { const getUserResponseAfterUpdate = await chai .request(app) - .get("/users/self") + .get(`/users/${userId}`) .set("cookie", `${cookieName}=${newUserJwt}`); expect(getUserResponseAfterUpdate).to.have.status(200);