File: controllers/form_controller.js
- /*
- Copyright (C) 2015 PencilBlue, LLC
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
- //dependencies
- var util = require('../include/util.js');
-
- module.exports = function(pb) {
-
- /**
- * Provides the basic functionality for implementing a controller that
- * needs access to a posted form.
- * @class FormController
- * @extends BaseController
- * @constructor
- */
- function FormController(){}
- util.inherits(FormController, pb.BaseController);
-
- /**
- * Instructs the controller to automatically sanitize any incoming post data
- * when set to TRUE.
- * @property autoSanitize
- * @type {Boolean}
- */
- FormController.prototype.autoSanitize = true;
-
- /**
- * Responsible for gathering the payload data from the request and parsing it.
- * The result is passed down to the controller's onPostParamsRetrieved function.
- * In addition and the <i>autoSanitize</i> property is TRUE, the posted
- * parameters will be sanitized.
- * @see BaseController#render
- * @method render
- * @param {Function} cb
- */
- FormController.prototype.render = function(cb) {
- var self = this;
- this.getPostParams(function(err, params) {
- if (util.isError(err)) {
- self.onPostParamsError(err, cb);
- return;
- }
-
- if (self.getAutoSanitize()) {
- self.sanitizeObject(params);
- }
- self.onPostParamsRetrieved(params, cb);
- });
- };
-
- /**
- *
- * @method getAutoSanitize
- * @return {Boolean}
- */
- FormController.prototype.getAutoSanitize = function() {
- return this.autoSanitize;
- };
-
- /**
- *
- * @method setAutoSanitize
- * @param {Boolean} val
- */
- FormController.prototype.setAutoSanitize = function(val) {
- this.autoSanitize = !!val;
- };
-
- /**
- *
- * @method onPostParamsError
- * @param {Error} err
- * @param {Function} cb
- */
- FormController.prototype.onPostParamsError = function(err, cb) {
- pb.log.silly("FormController: Error processing form parameters"+err);
- cb({content: err, code: 400});
- };
-
- /**
- * Called after the posted parameters have been received and parsed. The
- * function should be overriden in order to continue processing and render the
- * result of the request. The default implementation echoes the received
- * parameters as JSON.
- * @method onPostParamsRetrieved
- * @param {Object} params
- * @param {Function} cb
- */
- FormController.prototype.onPostParamsRetrieved = function(params, cb) {
- cb({content: JSON.stringify(params), content_type:'application/json'});
- };
-
- return FormController;
- };
-
-