me.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { type IUserHasId } from '@growi/core';
  2. import { Router, Request } from 'express';
  3. import ExternalUserGroupRelation from '~/features/external-user-group/server/models/external-user-group-relation';
  4. import loggerFactory from '~/utils/logger';
  5. import UserGroupRelation from '../../models/user-group-relation';
  6. import { ApiV3Response } from './interfaces/apiv3-response';
  7. const logger = loggerFactory('growi:routes:apiv3:me');
  8. const router = Router();
  9. interface AuthorizedRequest extends Request {
  10. user?: IUserHasId
  11. }
  12. module.exports = function(crowi) {
  13. const accessTokenParser = require('../../middlewares/access-token-parser')(crowi);
  14. const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
  15. const ApiResponse = require('../../util/apiResponse');
  16. /**
  17. * retrieve user-group documents
  18. */
  19. router.get('/user-groups', accessTokenParser, loginRequiredStrictly, async(req: AuthorizedRequest, res: ApiV3Response) => {
  20. try {
  21. const userGroups = await UserGroupRelation.findAllGroupsForUser(req.user);
  22. return res.json(ApiResponse.success({ userGroups }));
  23. }
  24. catch (e) {
  25. logger.error(e);
  26. return res.apiv3Err(e, 500);
  27. }
  28. });
  29. /**
  30. * retrieve external-user-group-relation documents
  31. */
  32. router.get('/external-user-groups', accessTokenParser, loginRequiredStrictly, async(req: AuthorizedRequest, res: ApiV3Response) => {
  33. try {
  34. const userGroups = await ExternalUserGroupRelation.findAllGroupsForUser(req.user);
  35. return res.json(ApiResponse.success({ userGroups }));
  36. }
  37. catch (e) {
  38. logger.error(e);
  39. return res.apiv3Err(e, 500);
  40. }
  41. });
  42. return router;
  43. };