| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import { SupportedAction } from '~/interfaces/activity';
- import loggerFactory from '~/utils/logger';
- import { InstallerService, FailedToCreateAdminUserError } from '../service/installer';
- const logger = loggerFactory('growi:routes:installer');
- module.exports = function(crowi) {
- const actions = {};
- const activityEvent = crowi.event('activity');
- actions.index = function(req, res) {
- return res.render('installer');
- };
- actions.install = async function(req, res, next) {
- const registerForm = req.body.registerForm || {};
- if (!req.form.isValid) {
- return res.render('installer');
- }
- const name = registerForm.name;
- const username = registerForm.username;
- const email = registerForm.email;
- const password = registerForm.password;
- const language = registerForm['app:globalLang'] || 'en_US';
- const installerService = new InstallerService(crowi);
- let adminUser;
- try {
- adminUser = await installerService.install({
- name,
- username,
- email,
- password,
- }, language);
- }
- catch (err) {
- if (err instanceof FailedToCreateAdminUserError) {
- req.form.errors.push(req.t('message.failed_to_create_admin_user', { errMessage: err.message }));
- }
- return res.render('installer');
- }
- const appService = crowi.appService;
- appService.setupAfterInstall();
- // login with passport
- req.logIn(adminUser, (err) => {
- if (err) {
- req.flash('successMessage', req.t('message.complete_to_install1'));
- req.session.redirectTo = '/';
- return res.redirect('/login');
- }
- req.flash('successMessage', req.t('message.complete_to_install2'));
- const parameters = { action: SupportedAction.ACTION_USER_REGISTRATION_SUCCESS };
- activityEvent.emit('update', res.locals.activity._id, parameters);
- return res.redirect('/');
- });
- };
- return actions;
- };
|