user-activation.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import type { Response, NextFunction } from 'express';
  2. import type { UserActivationErrorCode } from '~/interfaces/errors/user-activation';
  3. import type { ReqWithUserRegistrationOrder } from '~/server/middlewares/inject-user-registration-order-by-token-middleware';
  4. type Crowi = {
  5. // eslint-disable-next-line @typescript-eslint/no-explicit-any
  6. nextApp: any,
  7. }
  8. type CrowiReq = ReqWithUserRegistrationOrder & {
  9. crowi: Crowi,
  10. }
  11. export const renderUserActivationPage = (crowi: Crowi) => {
  12. return (req: CrowiReq, res: Response): void => {
  13. const { userRegistrationOrder } = req;
  14. const { nextApp } = crowi;
  15. req.crowi = crowi;
  16. nextApp.render(req, res, '/user-activation', { userRegistrationOrder });
  17. return;
  18. };
  19. };
  20. // middleware to handle error
  21. export const tokenErrorHandlerMiddeware = (crowi: Crowi) => {
  22. return (error: Error & { code: UserActivationErrorCode, statusCode: number }, req: CrowiReq, res: Response, next: NextFunction): void => {
  23. if (error != null) {
  24. const { nextApp } = crowi;
  25. req.crowi = crowi;
  26. nextApp.render(req, res, '/user-activation', { errorCode: error.code });
  27. return;
  28. }
  29. next();
  30. };
  31. };