installer.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. actions.index = function(req, res) {
  12. return res.render('installer');
  13. };
  14. actions.createAdmin = function(req, res) {
  15. var registerForm = req.body.registerForm || {};
  16. var language = req.language || 'en-US';
  17. if (req.form.isValid) {
  18. var name = registerForm.name;
  19. var username = registerForm.username;
  20. var email = registerForm.email;
  21. var password = registerForm.password;
  22. User.createUserByEmailAndPassword(name, username, email, password, language, function(err, userData) {
  23. if (err) {
  24. req.form.errors.push('管理ユーザーの作成に失敗しました。' + err.message);
  25. // TODO
  26. return res.render('installer');
  27. }
  28. userData.makeAdmin(function(err, userData) {
  29. Config.applicationInstall(function(err, configs) {
  30. if (err) {
  31. // TODO
  32. return ;
  33. }
  34. // login with passport
  35. req.logIn(userData, (err) => {
  36. if (err) { return next(); }
  37. else {
  38. req.flash('successMessage', 'GROWI のインストールが完了しました!はじめに、このページで各種設定を確認してください。');
  39. return res.redirect('/admin/app');
  40. }
  41. });
  42. });
  43. // create portal page for '/'
  44. const welcomeMarkdownPath = path.join(crowi.localeDir, language, 'welcome.md');
  45. const welcomeMarkdown = fs.readFileSync(welcomeMarkdownPath);
  46. Page.create('/', welcomeMarkdown, userData, {});
  47. });
  48. });
  49. } else {
  50. return res.render('installer');
  51. }
  52. };
  53. return actions;
  54. };