Initial sync up with master after Prettier
This commit is contained in:
114
core/nua.js
114
core/nua.js
@@ -2,34 +2,31 @@
|
||||
'use strict';
|
||||
|
||||
// ENiGMA½
|
||||
const MenuModule = require('./menu_module.js').MenuModule;
|
||||
const User = require('./user.js');
|
||||
const theme = require('./theme.js');
|
||||
const login = require('./system_menu_method.js').login;
|
||||
const Config = require('./config.js').get;
|
||||
const messageArea = require('./message_area.js');
|
||||
const {
|
||||
getISOTimestampString
|
||||
} = require('./database.js');
|
||||
const UserProps = require('./user_property.js');
|
||||
const MenuModule = require('./menu_module.js').MenuModule;
|
||||
const User = require('./user.js');
|
||||
const theme = require('./theme.js');
|
||||
const login = require('./system_menu_method.js').login;
|
||||
const Config = require('./config.js').get;
|
||||
const messageArea = require('./message_area.js');
|
||||
const { getISOTimestampString } = require('./database.js');
|
||||
const UserProps = require('./user_property.js');
|
||||
|
||||
// deps
|
||||
const _ = require('lodash');
|
||||
const _ = require('lodash');
|
||||
|
||||
exports.moduleInfo = {
|
||||
name : 'NUA',
|
||||
desc : 'New User Application',
|
||||
name: 'NUA',
|
||||
desc: 'New User Application',
|
||||
};
|
||||
|
||||
const MciViewIds = {
|
||||
userName : 1,
|
||||
password : 9,
|
||||
confirm : 10,
|
||||
errMsg : 11,
|
||||
userName: 1,
|
||||
password: 9,
|
||||
confirm: 10,
|
||||
errMsg: 11,
|
||||
};
|
||||
|
||||
exports.getModule = class NewUserAppModule extends MenuModule {
|
||||
|
||||
constructor(options) {
|
||||
super(options);
|
||||
|
||||
@@ -39,22 +36,30 @@ exports.getModule = class NewUserAppModule extends MenuModule {
|
||||
//
|
||||
// Validation stuff
|
||||
//
|
||||
validatePassConfirmMatch : function(data, cb) {
|
||||
const passwordView = self.viewControllers.menu.getView(MciViewIds.password);
|
||||
return cb(passwordView.getData() === data ? null : new Error('Passwords do not match'));
|
||||
validatePassConfirmMatch: function (data, cb) {
|
||||
const passwordView = self.viewControllers.menu.getView(
|
||||
MciViewIds.password
|
||||
);
|
||||
return cb(
|
||||
passwordView.getData() === data
|
||||
? null
|
||||
: new Error('Passwords do not match')
|
||||
);
|
||||
},
|
||||
|
||||
viewValidationListener : function(err, cb) {
|
||||
viewValidationListener: function (err, cb) {
|
||||
const errMsgView = self.viewControllers.menu.getView(MciViewIds.errMsg);
|
||||
let newFocusId;
|
||||
|
||||
if(err) {
|
||||
if (err) {
|
||||
errMsgView.setText(err.message);
|
||||
err.view.clearText();
|
||||
|
||||
if(err.view.getId() === MciViewIds.confirm) {
|
||||
if (err.view.getId() === MciViewIds.confirm) {
|
||||
newFocusId = MciViewIds.password;
|
||||
self.viewControllers.menu.getView(MciViewIds.password).clearText();
|
||||
self.viewControllers.menu
|
||||
.getView(MciViewIds.password)
|
||||
.clearText();
|
||||
}
|
||||
} else {
|
||||
errMsgView.clearText();
|
||||
@@ -63,11 +68,10 @@ exports.getModule = class NewUserAppModule extends MenuModule {
|
||||
return cb(newFocusId);
|
||||
},
|
||||
|
||||
|
||||
//
|
||||
// Submit handlers
|
||||
//
|
||||
submitApplication : function(formData, extraArgs, cb) {
|
||||
submitApplication: function (formData, extraArgs, cb) {
|
||||
const newUser = new User();
|
||||
const config = Config();
|
||||
|
||||
@@ -76,35 +80,44 @@ exports.getModule = class NewUserAppModule extends MenuModule {
|
||||
//
|
||||
// We have to disable ACS checks for initial default areas as the user is not yet ready
|
||||
//
|
||||
let confTag = messageArea.getDefaultMessageConferenceTag(self.client, true); // true=disableAcsCheck
|
||||
let areaTag = messageArea.getDefaultMessageAreaTagByConfTag(self.client, confTag, true); // true=disableAcsCheck
|
||||
let confTag = messageArea.getDefaultMessageConferenceTag(
|
||||
self.client,
|
||||
true
|
||||
); // true=disableAcsCheck
|
||||
let areaTag = messageArea.getDefaultMessageAreaTagByConfTag(
|
||||
self.client,
|
||||
confTag,
|
||||
true
|
||||
); // true=disableAcsCheck
|
||||
|
||||
// can't store undefined!
|
||||
confTag = confTag || '';
|
||||
areaTag = areaTag || '';
|
||||
|
||||
newUser.properties = {
|
||||
[ UserProps.RealName ] : formData.value.realName,
|
||||
[ UserProps.Birthdate ] : getISOTimestampString(formData.value.birthdate),
|
||||
[ UserProps.Sex ] : formData.value.sex,
|
||||
[ UserProps.Location ] : formData.value.location,
|
||||
[ UserProps.Affiliations ] : formData.value.affils,
|
||||
[ UserProps.EmailAddress ] : formData.value.email,
|
||||
[ UserProps.WebAddress ] : formData.value.web,
|
||||
[ UserProps.AccountCreated ] : getISOTimestampString(),
|
||||
[UserProps.RealName]: formData.value.realName,
|
||||
[UserProps.Birthdate]: getISOTimestampString(
|
||||
formData.value.birthdate
|
||||
),
|
||||
[UserProps.Sex]: formData.value.sex,
|
||||
[UserProps.Location]: formData.value.location,
|
||||
[UserProps.Affiliations]: formData.value.affils,
|
||||
[UserProps.EmailAddress]: formData.value.email,
|
||||
[UserProps.WebAddress]: formData.value.web,
|
||||
[UserProps.AccountCreated]: getISOTimestampString(),
|
||||
|
||||
[ UserProps.MessageConfTag ] : confTag,
|
||||
[ UserProps.MessageAreaTag ] : areaTag,
|
||||
[UserProps.MessageConfTag]: confTag,
|
||||
[UserProps.MessageAreaTag]: areaTag,
|
||||
|
||||
[ UserProps.TermHeight ] : self.client.term.termHeight,
|
||||
[ UserProps.TermWidth ] : self.client.term.termWidth,
|
||||
[UserProps.TermHeight]: self.client.term.termHeight,
|
||||
[UserProps.TermWidth]: self.client.term.termWidth,
|
||||
|
||||
// :TODO: Other defaults
|
||||
// :TODO: should probably have a place to create defaults/etc.
|
||||
};
|
||||
|
||||
const defaultTheme = _.get(config, 'theme.default');
|
||||
if('*' === defaultTheme) {
|
||||
if ('*' === defaultTheme) {
|
||||
newUser.properties[UserProps.ThemeId] = theme.getRandomTheme();
|
||||
} else {
|
||||
newUser.properties[UserProps.ThemeId] = defaultTheme;
|
||||
@@ -112,15 +125,15 @@ exports.getModule = class NewUserAppModule extends MenuModule {
|
||||
|
||||
// :TODO: User.create() should validate email uniqueness!
|
||||
const createUserInfo = {
|
||||
password : formData.value.password,
|
||||
sessionId : self.client.session.uniqueId, // used for events/etc.
|
||||
password: formData.value.password,
|
||||
sessionId: self.client.session.uniqueId, // used for events/etc.
|
||||
};
|
||||
newUser.create(createUserInfo, err => {
|
||||
if(err) {
|
||||
self.client.log.warn( { error : err, username : formData.value.username }, 'New user creation failed');
|
||||
|
||||
self.gotoMenu(extraArgs.error, err => {
|
||||
if(err) {
|
||||
if (err) {
|
||||
return self.prevMenu(cb);
|
||||
}
|
||||
return cb(null);
|
||||
@@ -130,14 +143,17 @@ exports.getModule = class NewUserAppModule extends MenuModule {
|
||||
|
||||
// Cache SysOp information now
|
||||
// :TODO: Similar to bbs.js. DRY
|
||||
if(newUser.isSysOp()) {
|
||||
if (newUser.isSysOp()) {
|
||||
config.general.sysOp = {
|
||||
username : formData.value.username,
|
||||
properties : newUser.properties,
|
||||
username: formData.value.username,
|
||||
properties: newUser.properties,
|
||||
};
|
||||
}
|
||||
|
||||
if(User.AccountStatus.inactive === self.client.user.properties[UserProps.AccountStatus]) {
|
||||
if (
|
||||
User.AccountStatus.inactive ===
|
||||
self.client.user.properties[UserProps.AccountStatus]
|
||||
) {
|
||||
return self.gotoMenu(extraArgs.inactive, cb);
|
||||
} else {
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user