nodebb-plugin-azn-regis-field
Version:
Adds custom fields to AzN user registration page
158 lines (118 loc) • 3.68 kB
JavaScript
;
var customFields = {
mcuser : ""
},
customData = [],
user = module.parent.require('./user'),
db = module.parent.require('./database'),
plugin = {};
plugin.init = function(params, callback) {
var app = params.router,
middleware = params.middleware,
controllers = params.controllers;
app.get('/admin/azn-regis-field', middleware.admin.buildHeader, renderAdmin);
app.get('/api/admin/azn-regis-field', renderAdmin);
callback();
};
plugin.addAdminNavigation = function(header, callback) {
header.plugins.push({
route: '/azn-regis-field',
icon: 'fa-tint',
name: 'AzN Registration Fields'
});
callback(null, header);
};
plugin.customHeaders = function(headers, callback) {
for(var key in customFields) {
switch(key) {
case 'mcuser':
var label = "Minecraft Username";
break;
}
headers.headers.push({
label: label
});
}
callback(null, headers);
};
plugin.customFields = function(params, callback) {
var users = params.users.map(function(user) {
if (!user.customRows) {
user.customRows = [];
for(var key in customFields) {
user.customRows.push({value: customFields[key]});
}
}
return user;
});
callback(null, {users: users});
};
plugin.addField = function(params, callback) {
for(var key in customFields) {
if (key == "") {
callback(null, params);
return;
}
switch(key) {
case 'mcuser':
var html = '<input class="form-control" type="text" name="mcuser" id="mcuser" placeholder="Enter your Minecraft Username"><span class="custom-feedback" id="mcuser-notify"';
var label = "Minecraft Username";
break;
}
var captcha = {
label: label,
html: html
};
if (params.templateData.regFormEntry && Array.isArray(params.templateData.regFormEntry)) {
params.templateData.regFormEntry.push(captcha);
} else {
params.templateData.captcha = captcha;
}
}
callback(null, params);
};
plugin.checkField = function(params, callback) {
var userData = params.userData;
var error = null;
for(var key in customFields) {
var value = userData[key];
if (value == "" || value == undefined) {
error = {message: 'Please complete all fields before registering.'};
}
}
callback(error, params);
};
plugin.creatingUser = function(params, callback) {
customData = params.data.customRows;
callback(null, params);
};
plugin.createdUser = function(params) {
var addCustomData = {
mcuser : customData[0].value
}
var keyID = 'user:' + params.uid + ':ns:custom_fields';
db.setObject(keyID, addCustomData, function(err) {
if (err) {
return callback(err);
}
});
};
plugin.addToApprovalQueue = function(params, callback) {
var data = params.data;
var userData = params.userData;
data.customRows = [];
for (var key in customFields) {
switch(key) {
case 'mcuser':
var fieldData = params.userData['mcuser'];
break;
}
customFields[key] = fieldData;
data.customRows.push({value: customFields[key]});
}
callback(null, {data: data, userData: userData});
};
function renderAdmin(req, res, next) {
res.render('admin/azn-regis-field', {fields: customFields});
}
module.exports = plugin;