Futa Arai 2 лет назад
Родитель
Сommit
6261f9cc3a

+ 1 - 2
apps/app/src/features/external-user-group/client/stores/external-user-group.ts

@@ -2,7 +2,6 @@ import { type SWRResponseWithUtils, withUtils } from '@growi/core/dist/swr';
 import useSWR, { SWRResponse } from 'swr';
 import useSWRImmutable from 'swr/immutable';
 
-import { apiGet } from '~/client/util/apiv1-client';
 import { apiv3Get, apiv3Put } from '~/client/util/apiv3-client';
 import { IExternalUserGroupHasId, IExternalUserGroupRelationHasId, LdapGroupSyncSettings } from '~/features/external-user-group/interfaces/external-user-group';
 import { ChildUserGroupListResult, IUserGroupRelationHasIdPopulatedUser, UserGroupRelationListResult } from '~/interfaces/user-group-response';
@@ -22,7 +21,7 @@ type MyExternalUserGroupsResult = {
 export const useSWRxMyExternalUserGroups = (shouldFetch: boolean): SWRResponse<IExternalUserGroupHasId[], Error> => {
   return useSWR(
     shouldFetch ? '/me/external-user-groups' : null,
-    endpoint => apiGet(endpoint).then(result => (result as MyExternalUserGroupsResult).userGroups),
+    endpoint => apiv3Get(endpoint).then(result => (result.data as MyExternalUserGroupsResult).userGroups),
   );
 };
 

+ 2 - 0
apps/app/src/server/routes/apiv3/index.js

@@ -118,5 +118,7 @@ module.exports = (crowi, app) => {
   router.use('/questionnaire', require('~/features/questionnaire/server/routes/apiv3/questionnaire')(crowi));
   router.use('/templates', require('~/features/templates/server/routes/apiv3')(crowi));
 
+  router.get('/me', require('./me')(crowi));
+
   return [router, routerForAdmin, routerForAuth];
 };

+ 66 - 0
apps/app/src/server/routes/apiv3/me.ts

@@ -0,0 +1,66 @@
+import { type IUserHasId, isPopulated } from '@growi/core';
+import { Router, Request } from 'express';
+
+import ExternalUserGroupRelation from '~/features/external-user-group/server/models/external-user-group-relation';
+import loggerFactory from '~/utils/logger';
+
+import UserGroupRelation from '../../models/user-group-relation';
+
+import { ApiV3Response } from './interfaces/apiv3-response';
+
+const logger = loggerFactory('growi:routes:apiv3:me');
+
+const router = Router();
+
+interface AuthorizedRequest extends Request {
+  user?: IUserHasId
+}
+
+module.exports = function(crowi) {
+  const accessTokenParser = require('../../middlewares/access-token-parser')(crowi);
+  const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
+
+  const ApiResponse = require('../../util/apiResponse');
+
+  /**
+   * retrieve user-group documents
+   */
+  router.get('/user-groups', accessTokenParser, loginRequiredStrictly, async(req: AuthorizedRequest, res: ApiV3Response) => {
+    try {
+      const userGroupRelations = await UserGroupRelation.findAllRelationForUser(req.user);
+      const userGroups = userGroupRelations.map((relation) => {
+        // relation.relatedGroup should be populated
+        return isPopulated(relation.relatedGroup) ? relation.relatedGroup : undefined;
+      })
+        // exclude undefined elements
+        .filter(elem => elem != null);
+      return res.json(ApiResponse.success({ userGroups }));
+    }
+    catch (e) {
+      logger.error(e);
+      return res.apiv3Err(e, 500);
+    }
+  });
+
+  /**
+   * retrieve external-user-group-relation documents
+   */
+  router.get('/external-user-groups', accessTokenParser, loginRequiredStrictly, async(req: AuthorizedRequest, res: ApiV3Response) => {
+    try {
+      const userGroupRelations = await ExternalUserGroupRelation.findAllRelationForUser(req.user);
+      const userGroups = userGroupRelations.map((relation) => {
+        // relation.relatedGroup should be populated
+        return isPopulated(relation.relatedGroup) ? relation.relatedGroup : undefined;
+      })
+      // exclude undefined elements
+        .filter(elem => elem != null);
+      return res.json(ApiResponse.success({ userGroups }));
+    }
+    catch (e) {
+      logger.error(e);
+      return res.apiv3Err(e, 500);
+    }
+  });
+
+  return router;
+};

+ 0 - 4
apps/app/src/server/routes/index.js

@@ -41,7 +41,6 @@ module.exports = function(crowi, app) {
   const page = require('./page')(crowi, app);
   const login = require('./login')(crowi, app);
   const loginPassport = require('./login-passport')(crowi, app);
-  const me = require('./me')(crowi, app);
   const admin = require('./admin')(crowi, app);
   const attachment = require('./attachment')(crowi, app);
   const comment = require('./comment')(crowi, app);
@@ -122,9 +121,6 @@ module.exports = function(crowi, app) {
 
   apiV1Router.get('/search'                        , accessTokenParser , loginRequired , search.api.search);
 
-  apiV1Router.get('/me/user-groups'  , accessTokenParser , loginRequiredStrictly , me.api.userGroups);
-  apiV1Router.get('/me/external-user-groups'  , accessTokenParser , loginRequiredStrictly , me.api.externalUserGroups);
-
   // HTTP RPC Styled API (に徐々に移行していいこうと思う)
   apiV1Router.get('/pages.list'          , accessTokenParser , loginRequired , page.api.list);
   apiV1Router.post('/pages.update'       , accessTokenParser , loginRequiredStrictly , excludeReadOnlyUser, addActivity, page.api.update);

+ 0 - 104
apps/app/src/server/routes/me.js

@@ -1,104 +0,0 @@
-import { isPopulated } from '@growi/core';
-
-import ExternalUserGroupRelation from '~/features/external-user-group/server/models/external-user-group-relation';
-
-import UserGroupRelation from '../models/user-group-relation';
-
-/**
- * @swagger
- *
- *  components:
- *    schemas:
- *      UserGroup:
- *        description: UserGroup
- *        type: object
- *        properties:
- *          __v:
- *            type: number
- *            description: record version
- *            example: 0
- *          _id:
- *            type: string
- *            description: user group ID
- *            example: 5e2d56c1e35da4004ef7e0b0
- *          createdAt:
- *            type: string
- *            description: date created at
- *            example: 2010-01-01T00:00:00.000Z
- */
-
-/**
- * @swagger
- *
- *  components:
- *    schemas:
- *      UserGroupRelation:
- *        description: UserGroupRelation
- *        type: object
- *        properties:
- *          __v:
- *            type: number
- *            description: record version
- *            example: 0
- *          _id:
- *            type: string
- *            description: user group relation ID
- *            example: 5e2d56cbe35da4004ef7e0b1
- *          relatedGroup:
- *            $ref: '#/components/schemas/UserGroup'
- *          relatedUser:
- *            $ref: '#/components/schemas/User/properties/_id'
- *          createdAt:
- *            type: string
- *            description: date created at
- *            example: 2010-01-01T00:00:00.000Z
- */
-
-module.exports = function(crowi, app) {
-  const ApiResponse = require('../util/apiResponse');
-
-  // , pluginService = require('../service/plugin')
-
-  const actions = {};
-
-  const api = {};
-  actions.api = api;
-
-  /**
-   * retrieve user-group documents
-   * @param {object} req
-   * @param {object} res
-   */
-  api.userGroups = function(req, res) {
-    UserGroupRelation.findAllRelationForUser(req.user)
-      .then((userGroupRelations) => {
-        const userGroups = userGroupRelations.map((relation) => {
-          // relation.relatedGroup should be populated
-          return isPopulated(relation.relatedGroup) ? relation.relatedGroup : undefined;
-        })
-          // exclude undefined elements
-          .filter(elem => elem != null);
-        return res.json(ApiResponse.success({ userGroups }));
-      });
-  };
-
-  /**
-   * retrieve external-user-group-relation documents
-   * @param {object} req
-   * @param {object} res
-   */
-  api.externalUserGroups = function(req, res) {
-    ExternalUserGroupRelation.findAllRelationForUser(req.user)
-      .then((userGroupRelations) => {
-        const userGroups = userGroupRelations.map((relation) => {
-          // relation.relatedGroup should be populated
-          return isPopulated(relation.relatedGroup) ? relation.relatedGroup : undefined;
-        })
-          // exclude undefined elements
-          .filter(elem => elem != null);
-        return res.json(ApiResponse.success({ userGroups }));
-      });
-  };
-
-  return actions;
-};

+ 1 - 2
apps/app/src/stores/user-group.tsx

@@ -5,7 +5,6 @@ import { type SWRResponseWithUtils, withUtils } from '@growi/core/dist/swr';
 import useSWR, { SWRResponse } from 'swr';
 import useSWRImmutable from 'swr/immutable';
 
-import { apiGet } from '~/client/util/apiv1-client';
 import { apiv3Get, apiv3Put } from '~/client/util/apiv3-client';
 import {
   IUserGroupRelationHasIdPopulatedUser,
@@ -20,7 +19,7 @@ type MyUserGroupsResult = {
 export const useSWRxMyUserGroups = (shouldFetch: boolean): SWRResponse<IUserGroupHasId[], Error> => {
   return useSWR(
     shouldFetch ? '/me/user-groups' : null,
-    endpoint => apiGet(endpoint).then(result => (result as MyUserGroupsResult).userGroups),
+    endpoint => apiv3Get(endpoint).then(result => (result.data as MyUserGroupsResult).userGroups),
   );
 };