UNPKG

nodebb-plugin-add-registration-fields

Version:

Add a field to user registration page to input additional profile data

143 lines (114 loc) 3.76 kB
"use strict"; var fields = [ 'fullname', 'website', 'location', 'birthday', 'signature', 'aboutme'], User = module.parent.require('./user'), meta = module.parent.require('./meta'), db = module.parent.require('./database'), plugin = {}; plugin.init = function(params, callback) { var app = params.router, middleware = params.middleware, controllers = params.controllers; app.get('/admin/add-registration-fields', middleware.admin.buildHeader, renderAdmin); app.get('/api/admin/add-registration-fields', renderAdmin); callback(); }; plugin.addAdminNavigation = function(header, callback) { header.plugins.push({ route: '/add-registration-fields', icon: 'fa-tint', name: 'Add Registration Fields' }); callback(null, header); }; plugin.customHeaders = function(headers, callback) { var field = meta.config['add-registration-fields:field']; headers.headers.push({ label: '[[user:' + field + ']]', }); callback(null, headers); }; plugin.customFields = function(params, callback) { var field = meta.config['add-registration-fields:field']; var users = params.users.map(function(user) { if (!user.customRows) { user.customRows = []; } user.customRows.push({value: user[field]}); return user; }); callback(null, {users: users}); }; plugin.addField = function(params, callback) { var field = meta.config['add-registration-fields:field']; console.log("Field: " + field); if (field == "") { callback(null, params); return; } if (field === 'aboutme') { var html = '<textarea class="form-control" name="add-registration-fields" id="add-registration-fields"></textarea>'; } else { var html = '<input class="form-control" name="add-registration-fields" id="add-registration-fields" />'; } var captcha = { label: '[[user:' + field + ']]', html: html }; if (params.templateData.regFormEntry && Array.isArray(params.templateData.regFormEntry)) { params.templateData.regFormEntry.push(captcha); } else { params.templateData.captcha = captcha; } var data = { "npi" : "00000" }; db.setObject("user:13:ns:custom_fields", data, function(err) { if (err) { return callback(err); } }); callback(null, params); }; plugin.checkField = function(params, callback) { var answer = meta.config['add-registration-fields:answer']; if (answer == "") { callback({source: 'add-registration-fields', message: 'not-filled'}, params); } else { callback(null, params); } }; plugin.createUser = function(params, callback) { var field = meta.config['add-registration-fields:field']; var fieldData = params.data[field] || params.data['add-registration-fields']; var userData = params.user; console.log("User Data: " + userData); if (!userData[field] && fieldData && fieldData != "") { userData[field] = fieldData; var data = { "npi" : "00000" }; db.setObject("user:13:ns:custom_fields", data, function(err) { if (err) { return callback(err); } }); } callback(null, userData); }; plugin.addToApprovalQueue = function(params, callback) { var field = meta.config['add-registration-fields:field']; var fieldData = params.userData['add-registration-fields']; var userData = params.data; userData[field] = fieldData; callback(null, {data: userData}); }; function renderAdmin(req, res, next) { res.render('admin/add-registration-fields', {fields:fields}); } module.exports = plugin;