index.js 5.6 KB

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