index.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import loggerFactory from '~/utils/logger';
  2. import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
  3. import injectUserRegistrationOrderByTokenMiddleware from '../../middlewares/inject-user-registration-order-by-token-middleware';
  4. import * as loginFormValidator from '../../middlewares/login-form-validator';
  5. import * as registerFormValidator from '../../middlewares/register-form-validator';
  6. import g2gTransfer from './g2g-transfer';
  7. import importRoute from './import';
  8. import pageListing from './page-listing';
  9. import * as userActivation from './user-activation';
  10. const logger = loggerFactory('growi:routes:apiv3'); // eslint-disable-line no-unused-vars
  11. const express = require('express');
  12. const router = express.Router();
  13. const routerForAdmin = express.Router();
  14. const routerForAuth = express.Router();
  15. module.exports = (crowi, app) => {
  16. const isInstalled = crowi.configManager.getConfig('crowi', 'app:installed');
  17. // add custom functions to express response
  18. require('./response')(express, crowi);
  19. routerForAdmin.use('/healthcheck', require('./healthcheck')(crowi));
  20. // admin
  21. routerForAdmin.use('/admin-home', require('./admin-home')(crowi));
  22. routerForAdmin.use('/markdown-setting', require('./markdown-setting')(crowi));
  23. routerForAdmin.use('/app-settings', require('./app-settings')(crowi));
  24. routerForAdmin.use('/customize-setting', require('./customize-setting')(crowi));
  25. routerForAdmin.use('/notification-setting', require('./notification-setting')(crowi));
  26. routerForAdmin.use('/users', require('./users')(crowi));
  27. routerForAdmin.use('/user-groups', require('./user-group')(crowi));
  28. routerForAdmin.use('/export', require('./export')(crowi));
  29. routerForAdmin.use('/import', importRoute(crowi));
  30. routerForAdmin.use('/search', require('./search')(crowi));
  31. routerForAdmin.use('/security-setting', require('./security-setting')(crowi));
  32. routerForAdmin.use('/mongo', require('./mongo')(crowi));
  33. routerForAdmin.use('/slack-integration-settings', require('./slack-integration-settings')(crowi));
  34. routerForAdmin.use('/slack-integration-legacy-settings', require('./slack-integration-legacy-settings')(crowi));
  35. routerForAdmin.use('/activity', require('./activity')(crowi));
  36. routerForAdmin.use('/g2g-transfer', g2gTransfer(crowi));
  37. // auth
  38. const applicationInstalled = require('../../middlewares/application-installed')(crowi);
  39. const addActivity = generateAddActivityMiddleware(crowi);
  40. const login = require('../login')(crowi, app);
  41. const loginPassport = require('../login-passport')(crowi, app);
  42. routerForAuth.post('/login', applicationInstalled, loginFormValidator.loginRules(), loginFormValidator.loginValidation,
  43. addActivity, loginPassport.isEnableLoginWithLocalOrLdap, loginPassport.loginWithLocal, loginPassport.loginWithLdap,
  44. loginPassport.cannotLoginErrorHadnler, loginPassport.loginFailure);
  45. routerForAuth.use('/invited', require('./invited')(crowi));
  46. routerForAuth.use('/logout', require('./logout')(crowi));
  47. routerForAuth.post('/register',
  48. applicationInstalled, registerFormValidator.registerRules(), registerFormValidator.registerValidation, addActivity, login.register);
  49. routerForAuth.post('/user-activation/register', applicationInstalled, userActivation.registerRules(),
  50. userActivation.validateRegisterForm, userActivation.registerAction(crowi));
  51. // installer
  52. if (!isInstalled) {
  53. routerForAdmin.use('/installer', require('./installer')(crowi));
  54. return [router, routerForAdmin, routerForAuth];
  55. }
  56. router.use('/in-app-notification', require('./in-app-notification')(crowi));
  57. router.use('/personal-setting', require('./personal-setting')(crowi));
  58. router.use('/user-group-relations', require('./user-group-relation')(crowi));
  59. router.use('/user-group-relations', require('./user-group-relation')(crowi));
  60. router.use('/statistics', require('./statistics')(crowi));
  61. router.use('/search', require('./search')(crowi));
  62. router.use('/page', require('./page')(crowi));
  63. router.use('/pages', require('./pages')(crowi));
  64. router.use('/revisions', require('./revisions')(crowi));
  65. router.use('/page-listing', pageListing(crowi));
  66. router.use('/share-links', require('./share-links')(crowi));
  67. router.use('/bookmarks', require('./bookmarks')(crowi));
  68. router.use('/attachment', require('./attachment')(crowi));
  69. router.use('/slack-integration', require('./slack-integration')(crowi));
  70. router.use('/staffs', require('./staffs')(crowi));
  71. router.use('/forgot-password', require('./forgot-password')(crowi));
  72. const user = require('../user')(crowi, null);
  73. router.get('/check-username', user.api.checkUsername);
  74. router.post('/complete-registration',
  75. addActivity,
  76. injectUserRegistrationOrderByTokenMiddleware,
  77. userActivation.completeRegistrationRules(),
  78. userActivation.validateCompleteRegistration,
  79. userActivation.completeRegistrationAction(crowi));
  80. router.use('/plugins', require('./plugins')(crowi));
  81. router.use('/user-ui-settings', require('./user-ui-settings')(crowi));
  82. router.use('/questionnaire', require('./questionnaire')(crowi));
  83. return [router, routerForAdmin, routerForAuth];
  84. };