text: const passwordField = AccountsTemplates.removeField('password');
  const emailField = AccountsTemplates.removeField('email');
  AccountsTemplates.addFields([{
    _id: 'username',
    type: 'text',
    displayName: 'username',
    required: true,
    minLength: 2,
  }, emailField, passwordField]);
  
  AccountsTemplates.configure({
    defaultLayout: 'userFormsLayout',
    defaultContentRegion: 'content',
    confirmPassword: false,
    enablePasswordChange: true,
    sendVerificationEmail: true,
    showForgotPasswordLink: true,
    onLogoutHook() {
      const homePage = 'home';
      if (FlowRouter.getRouteName() === homePage) {
        FlowRouter.reload();
      } else {
        FlowRouter.go(homePage);
      }
    },
  });
  
  ['signIn', 'signUp', 'resetPwd', 'forgotPwd', 'enrollAccount'].forEach(
    (routeName) => AccountsTemplates.configureRoute(routeName));
  
  // We display the form to change the password in a popup window that already
  // have a title, so we unset the title automatically displayed by useraccounts.
  AccountsTemplates.configure({
    texts: {
      title: {
        changePwd: '',
      },
    },
  });
  
  AccountsTemplates.configureRoute('changePwd', {
    redirect() {
      // XXX We should emit a notification once we have a notification system.
      // Currently the user has no indication that his modification has been
      // applied.
      Popup.back();
    },
  });
  
  if (Meteor.isServer) {
    if (process.env.MAIL_FROM) {
      Accounts.emailTemplates.from = process.env.MAIL_FROM;
    }
  
    ['resetPassword-subject', 'resetPassword-text', 'verifyEmail-subject', 'verifyEmail-text', 'enrollAccount-subject', 'enrollAccount-text'].forEach((str) => {
      const words = str.split('-');
      Accounts.emailTemplates[words[0]][words[1]] = (user, url) => {
        return TAPi18n.__(`email-${str}`, { user: user.getName(), url }, user.getLanguage());
      };
    });
  }
  