installer.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. module.exports = function(crowi, app) {
  2. 'use strict';
  3. var debug = require('debug')('growi:routes:installer')
  4. , path = require('path')
  5. , fs = require('graceful-fs')
  6. , models = crowi.models
  7. , Config = models.Config
  8. , User = models.User
  9. , Page = models.Page
  10. , actions = {};
  11. function createInitialPages(owner, lang) {
  12. // create portal page for '/'
  13. const welcomeMarkdownPath = path.join(crowi.localeDir, lang, 'welcome.md');
  14. const welcomeMarkdown = fs.readFileSync(welcomeMarkdownPath);
  15. Page.create('/', welcomeMarkdown, owner, {});
  16. // create /Sandbox
  17. const sandboxMarkdownPath = path.join(crowi.localeDir, lang, 'sandbox.md');
  18. const sandboxMarkdown = fs.readFileSync(sandboxMarkdownPath);
  19. Page.create('/Sandbox', sandboxMarkdown, owner, {});
  20. // create /Sandbox/Bootstrap3
  21. const bs3MarkdownPath = path.join(crowi.localeDir, 'en-US', 'sandbox-bootstrap3.md');
  22. const bs3Markdown = fs.readFileSync(bs3MarkdownPath);
  23. Page.create('/Sandbox/Bootstrap3', bs3Markdown, owner, {});
  24. }
  25. actions.index = function(req, res) {
  26. return res.render('installer');
  27. };
  28. actions.createAdmin = function(req, res) {
  29. var registerForm = req.body.registerForm || {};
  30. var language = req.language || 'en-US';
  31. if (req.form.isValid) {
  32. var name = registerForm.name;
  33. var username = registerForm.username;
  34. var email = registerForm.email;
  35. var password = registerForm.password;
  36. User.createUserByEmailAndPassword(name, username, email, password, language, function(err, userData) {
  37. if (err) {
  38. req.form.errors.push('管理ユーザーの作成に失敗しました。' + err.message);
  39. // TODO
  40. return res.render('installer');
  41. }
  42. userData.makeAdmin(function(err, userData) {
  43. Config.applicationInstall(function(err, configs) {
  44. if (err) {
  45. // TODO
  46. return ;
  47. }
  48. // login with passport
  49. req.logIn(userData, (err) => {
  50. if (err) { return next() }
  51. else {
  52. req.flash('successMessage', 'GROWI のインストールが完了しました!はじめに、このページで各種設定を確認してください。');
  53. return res.redirect('/admin/app');
  54. }
  55. });
  56. });
  57. // create initial pages
  58. createInitialPages(userData, language);
  59. });
  60. });
  61. }
  62. else {
  63. return res.render('installer');
  64. }
  65. };
  66. return actions;
  67. };