const passwordField = AccountsTemplates.removeField('password'); const emailField = AccountsTemplates.removeField('email'); AccountsTemplates.addFields([ { _id: 'username', type: 'text', displayName: 'username', required: true, minLength: 2, }, emailField, passwordField, { _id: 'invitationcode', type: 'text', displayName: 'Invitation Code', required: false, minLength: 6, template: 'invitationCode', }, ]); 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) { [ 'resetPassword-subject', 'resetPassword-text', 'verifyEmail-subject', 'verifyEmail-text', 'enrollAccount-subject', 'enrollAccount-text', ].forEach(str => { const [templateName, field] = str.split('-'); Accounts.emailTemplates[templateName][field] = (user, url) => { return TAPi18n.__( `email-${str}`, { url, user: user.getName(), siteName: Accounts.emailTemplates.siteName, }, user.getLanguage(), ); }; }); }