installer.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. module.exports = function(crowi, app) {
  2. 'use strict';
  3. var debug = require('debug')('crowi:routes:installer')
  4. , models = crowi.models
  5. , Config = models.Config
  6. , User = models.User
  7. , Page = models.Page
  8. , actions = {};
  9. actions.index = function(req, res) {
  10. return res.render('installer');
  11. };
  12. actions.createAdmin = function(req, res) {
  13. var registerForm = req.body.registerForm || {};
  14. var language = req.language || 'en';
  15. if (req.form.isValid) {
  16. var name = registerForm.name;
  17. var username = registerForm.username;
  18. var email = registerForm.email;
  19. var password = registerForm.password;
  20. User.createUserByEmailAndPassword(name, username, email, password, language, function(err, userData) {
  21. if (err) {
  22. req.form.errors.push('管理ユーザーの作成に失敗しました。' + err.message);
  23. // TODO
  24. return res.render('installer');
  25. }
  26. userData.makeAdmin(function(err, userData) {
  27. Config.applicationInstall(function(err, configs) {
  28. if (err) {
  29. // TODO
  30. return ;
  31. }
  32. // login処理
  33. req.user = req.session.user = userData;
  34. req.flash('successMessage', 'Crowi のインストールが完了しました!はじめに、このページでこの Wiki の各種設定を確認してください。');
  35. return res.redirect('/admin/app');
  36. });
  37. // create portal page for '/'
  38. Page.create('/', '# Welcome to crowi-plus!', userData, {});
  39. });
  40. });
  41. } else {
  42. return res.render('installer');
  43. }
  44. };
  45. return actions;
  46. };