add-activity.ts 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import type { IUserHasId } from '@growi/core';
  2. import { NextFunction, Request, Response } from 'express';
  3. import { SupportedAction } from '~/interfaces/activity';
  4. import Activity from '~/server/models/activity';
  5. import loggerFactory from '~/utils/logger';
  6. const logger = loggerFactory('growi:middlewares:add-activity');
  7. interface AuthorizedRequest extends Request {
  8. user?: IUserHasId
  9. }
  10. export const generateAddActivityMiddleware = crowi => async(req: AuthorizedRequest, res: Response, next: NextFunction): Promise<void> => {
  11. if (req.method === 'GET') {
  12. logger.warn('This middleware is not available for GET requests');
  13. return next();
  14. }
  15. const parameter = {
  16. ip: req.ip,
  17. endpoint: req.originalUrl,
  18. action: SupportedAction.ACTION_UNSETTLED,
  19. user: req.user?._id,
  20. snapshot: {
  21. username: req.user?.username,
  22. },
  23. };
  24. try {
  25. const activity = await Activity.createByParameters(parameter);
  26. res.locals.activity = activity;
  27. }
  28. catch (err) {
  29. logger.error('Create activity failed', err);
  30. }
  31. return next();
  32. };