104 lines
3.4 KiB
JavaScript
104 lines
3.4 KiB
JavaScript
/* jslint node: true */
|
|
'use strict';
|
|
|
|
// ENiGMA½
|
|
const { MenuModule } = require('./menu_module.js');
|
|
const { getUserList } = require('./user.js');
|
|
const { Errors } = require('./enig_error.js');
|
|
const UserProps = require('./user_property.js');
|
|
|
|
// deps
|
|
const moment = require('moment');
|
|
const async = require('async');
|
|
const _ = require('lodash');
|
|
|
|
exports.moduleInfo = {
|
|
name: 'User List',
|
|
desc: 'Lists all system users',
|
|
author: 'NuSkooler',
|
|
};
|
|
|
|
const MciViewIds = {
|
|
userList: 1,
|
|
};
|
|
|
|
exports.getModule = class UserListModule extends MenuModule {
|
|
constructor(options) {
|
|
super(options);
|
|
}
|
|
|
|
mciReady(mciData, cb) {
|
|
super.mciReady(mciData, err => {
|
|
if (err) {
|
|
return cb(err);
|
|
}
|
|
|
|
async.series(
|
|
[
|
|
next => {
|
|
return this.prepViewController('userList', 0, mciData.menu, next);
|
|
},
|
|
next => {
|
|
const userListView = this.viewControllers.userList.getView(
|
|
MciViewIds.userList
|
|
);
|
|
if (!userListView) {
|
|
return cb(
|
|
Errors.MissingMci(
|
|
`Missing user list MCI ${MciViewIds.userList}`
|
|
)
|
|
);
|
|
}
|
|
|
|
const fetchOpts = {
|
|
properties: [
|
|
UserProps.RealName,
|
|
UserProps.Location,
|
|
UserProps.Affiliations,
|
|
UserProps.LastLoginTs,
|
|
],
|
|
propsCamelCase: true, // e.g. real_name -> realName
|
|
};
|
|
getUserList(fetchOpts, (err, userList) => {
|
|
if (err) {
|
|
return next(err);
|
|
}
|
|
|
|
const dateTimeFormat = _.get(
|
|
this,
|
|
'menuConfig.config.dateTimeFormat',
|
|
this.client.currentTheme.helpers.getDateTimeFormat(
|
|
'short'
|
|
)
|
|
);
|
|
|
|
userList = userList.map(entry => {
|
|
return Object.assign(entry, {
|
|
text: entry.userName,
|
|
affils: entry.affiliation,
|
|
lastLoginTs: moment(entry.lastLoginTimestamp).format(
|
|
dateTimeFormat
|
|
),
|
|
});
|
|
});
|
|
|
|
userListView.setItems(userList);
|
|
userListView.redraw();
|
|
return next(null);
|
|
});
|
|
},
|
|
],
|
|
err => {
|
|
if (err) {
|
|
this.client.log.error(
|
|
{ error: err.message },
|
|
'Error loading user list'
|
|
);
|
|
}
|
|
return cb(err);
|
|
}
|
|
);
|
|
});
|
|
}
|
|
};
|