installer.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. module.exports = function(crowi, app) {
  2. 'use strict';
  3. var debug = require('debug')('crowi: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. }
  21. actions.index = function(req, res) {
  22. return res.render('installer');
  23. };
  24. actions.createAdmin = function(req, res) {
  25. var registerForm = req.body.registerForm || {};
  26. var language = req.language || 'en-US';
  27. if (req.form.isValid) {
  28. var name = registerForm.name;
  29. var username = registerForm.username;
  30. var email = registerForm.email;
  31. var password = registerForm.password;
  32. User.createUserByEmailAndPassword(name, username, email, password, language, function(err, userData) {
  33. if (err) {
  34. req.form.errors.push('管理ユーザーの作成に失敗しました。' + err.message);
  35. // TODO
  36. return res.render('installer');
  37. }
  38. userData.makeAdmin(function(err, userData) {
  39. Config.applicationInstall(function(err, configs) {
  40. if (err) {
  41. // TODO
  42. return ;
  43. }
  44. // login with passport
  45. req.logIn(userData, (err) => {
  46. if (err) { return next(); }
  47. else {
  48. req.flash('successMessage', 'GROWI のインストールが完了しました!はじめに、このページで各種設定を確認してください。');
  49. return res.redirect('/admin/app');
  50. }
  51. });
  52. });
  53. // create initial pages
  54. createInitialPages(userData, language);
  55. });
  56. });
  57. } else {
  58. return res.render('installer');
  59. }
  60. };
  61. return actions;
  62. };