From aaa5acbb0c9bfe6e5f1275c0fecb0f3238638b4d Mon Sep 17 00:00:00 2001 From: kontrollanten <6680299+kontrollanten@users.noreply.github.com> Date: Tue, 26 Mar 2024 11:51:02 +0100 Subject: [PATCH] feat(plugins): add filter:api.user.me.get.result relates to #6219 --- packages/models/src/plugins/server/server-hook.model.ts | 4 +++- packages/tests/fixtures/peertube-plugin-test/main.js | 9 +++++++++ packages/tests/src/plugins/filter-hooks.ts | 9 +++++++++ server/core/controllers/api/users/me.ts | 8 +++++++- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/packages/models/src/plugins/server/server-hook.model.ts b/packages/models/src/plugins/server/server-hook.model.ts index 4b71b9531..5f6765041 100644 --- a/packages/models/src/plugins/server/server-hook.model.ts +++ b/packages/models/src/plugins/server/server-hook.model.ts @@ -137,7 +137,9 @@ export const serverFilterHookObject = { // Peertube >= 5.2 'filter:feed.podcast.channel.create-custom-tags.result': true, // Peertube >= 5.2 - 'filter:feed.podcast.video.create-custom-tags.result': true + 'filter:feed.podcast.video.create-custom-tags.result': true, + // Peertube >= 6.1 + 'filter:api.user.me.get.result': true } export type ServerFilterHookName = keyof typeof serverFilterHookObject diff --git a/packages/tests/fixtures/peertube-plugin-test/main.js b/packages/tests/fixtures/peertube-plugin-test/main.js index 5f8d24505..d8eaa3d71 100644 --- a/packages/tests/fixtures/peertube-plugin-test/main.js +++ b/packages/tests/fixtures/peertube-plugin-test/main.js @@ -103,6 +103,15 @@ async function register ({ registerHook, registerSetting, settingsManager, stora handler: obj => addToTotal(obj, 4) }) + registerHook({ + target: 'filter:api.user.me.get.result', + handler: (result) => { + result.customParam = 'Customized' + + return result + } + }) + registerHook({ target: 'filter:api.user.me.subscription-videos.list.params', handler: obj => addToCount(obj) diff --git a/packages/tests/src/plugins/filter-hooks.ts b/packages/tests/src/plugins/filter-hooks.ts index 5ae85e7be..7f868f62b 100644 --- a/packages/tests/src/plugins/filter-hooks.ts +++ b/packages/tests/src/plugins/filter-hooks.ts @@ -3,6 +3,7 @@ import { expect } from 'chai' import { HttpStatusCode, + MyUser, PeerTubeProblemDocument, VideoDetails, VideoImportState, @@ -469,6 +470,14 @@ describe('Test plugin filter hooks', function () { }) }) + describe('Users', function () { + it('Should run filter:api.user.me.get.result', async function () { + const user = await servers[0].users.getMyInfo() as MyUser & { customParam: string } + + expect(user.customParam).to.equal('Customized') + }) + }) + describe('Should run filter:api.user.signup.allowed.result', function () { before(async function () { diff --git a/server/core/controllers/api/users/me.ts b/server/core/controllers/api/users/me.ts index fd8e9441c..8f85788c1 100644 --- a/server/core/controllers/api/users/me.ts +++ b/server/core/controllers/api/users/me.ts @@ -160,7 +160,13 @@ async function getUserInformation (req: express.Request, res: express.Response) // We did not load channels in res.locals.user const user = await UserModel.loadForMeAPI(res.locals.oauth.token.user.id) - return res.json(user.toMeFormattedJSON()) + const result = await Hooks.wrapObject( + user.toMeFormattedJSON(), + 'filter:api.user.me.get.result', + { user } + ) + + return res.json(result) } async function getUserVideoQuotaUsed (req: express.Request, res: express.Response) {