Просмотр исходного кода

Make userId come from parameter instead of logged in user

arvid-e 5 месяцев назад
Родитель
Сommit
8a993d25e8

+ 5 - 7
apps/app/src/server/routes/apiv3/user-activities.ts

@@ -178,18 +178,16 @@ module.exports = (crowi: Crowi): Router => {
 
 
       const limit = req.query.limit || defaultLimit || 10;
       const limit = req.query.limit || defaultLimit || 10;
       const offset = req.query.offset || 0;
       const offset = req.query.offset || 0;
+      const targetUserId = req.params.targetUserId;
 
 
-      const user = req.user;
-
-      if (!user || !user._id) {
-        logger.error('Authentication failure: req.user is missing after loginRequiredStrictly.');
-        return res.apiv3Err('Authentication failed.', 401);
+      if (typeof targetUserId !== 'string') {
+        logger.error('Bad request: targetUserId must be of type string.');
+        return res.apiv3Err('Bad request.', 400);
       }
       }
 
 
-      const userId = user._id;
 
 
       try {
       try {
-        const userObjectId = new Types.ObjectId(userId);
+        const userObjectId = new Types.ObjectId(targetUserId);
 
 
         const userActivityPipeline: PipelineStage[] = [
         const userActivityPipeline: PipelineStage[] = [
           {
           {

+ 4 - 1
apps/app/src/stores/recent-activity.ts

@@ -8,19 +8,22 @@ import type { PaginateResult } from '~/interfaces/mongoose-utils';
 export const useSWRxRecentActivity = (
 export const useSWRxRecentActivity = (
     limit?: number,
     limit?: number,
     offset?: number,
     offset?: number,
+    targetUserId?: string,
 ): SWRResponse<PaginateResult<IActivityHasId>, Error> => {
 ): SWRResponse<PaginateResult<IActivityHasId>, Error> => {
 
 
-  const key = ['/user-activities', limit, offset];
+  const key = ['/user-activities', limit, offset, targetUserId];
 
 
   const fetcher = ([
   const fetcher = ([
     endpoint,
     endpoint,
     limitParam,
     limitParam,
     offsetParam,
     offsetParam,
+    targetUserIdParam,
   ]) => {
   ]) => {
 
 
     const promise = apiv3Get<UserActivitiesResult>(endpoint, {
     const promise = apiv3Get<UserActivitiesResult>(endpoint, {
       limit: limitParam,
       limit: limitParam,
       offset: offsetParam,
       offset: offsetParam,
+      targetUserId: targetUserIdParam,
     });
     });
 
 
     return promise.then(result => result.data.serializedPaginationResult);
     return promise.then(result => result.data.serializedPaginationResult);