UNPKG

periodicjs.ext.user_access_control

Version:

A user access control extension for Periodicjs that uses user roles and user privleges to controll access

271 lines (240 loc) 7.94 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: controller/userrole.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Source: controller/userrole.js</h1> <section> <article> <pre class="prettyprint source"><code>'use strict'; var Utilities = require('periodicjs.core.utilities'), ControllerHelper = require('periodicjs.core.controller'), CoreUtilities, CoreController, appSettings, mongoose, Userrole, Userprivilege, logger; /** * manage user role section * @param {object} req * @param {object} res * @return {object} reponds with an error page or requested view */ var index = function(req, res){ CoreController.getPluginViewDefaultTemplate( { viewname:'p-admin/userroles/index', themefileext:appSettings.templatefileextension, extname: 'periodicjs.ext.admin' }, function(err,templatepath){ CoreController.handleDocumentQueryRender({ res:res, req:req, renderView:templatepath, responseData:{ pagedata:{ title:'Manage Users Roles', extensions:CoreUtilities.getAdminMenu() }, userroles: req.controllerData.userroles, user:req.user } }); } ); }; /** * create user role form * @param {object} req * @param {object} res * @return {object} reponds with an error page or requested view */ var create = function (req, res) { var newuserrole = CoreUtilities.removeEmptyObjectValues(req.body); newuserrole.name = CoreUtilities.makeNiceName(newuserrole.title); newuserrole.author = [req.user._id]; // console.log(newitem); CoreController.createModel({ model: Userrole, newdoc: newuserrole, res: res, req: req, successredirect: '/p-admin/userrole/edit/', appendid: true }); }; /** * create a new usr role * @param {object} req * @param {object} res * @return {object} reponds with an error page or requested view */ var userrole_new = function(req, res){ CoreController.getPluginViewDefaultTemplate( { viewname:'p-admin/userroles/new', themefileext:appSettings.templatefileextension, extname: 'periodicjs.ext.admin' }, function(err,templatepath){ CoreController.handleDocumentQueryRender({ res:res, req:req, renderView:templatepath, responseData:{ pagedata:{ title:'New User Role', headerjs: ['/extensions/periodicjs.ext.admin/js/useraccess.min.js'], extensions:CoreUtilities.getAdminMenu() }, userrole:null, //req.controllerData.userrole user:req.user } }); } ); }; /** * show user role * @param {object} req * @param {object} res * @return {object} reponds with an error page or requested view */ var show = function (req, res) { CoreController.getPluginViewDefaultTemplate({ viewname:'p-admin/userroles/edit', themefileext:appSettings.templatefileextension, extname: 'periodicjs.ext.admin' }, function (err, templatepath) { CoreController.handleDocumentQueryRender({ res: res, req: req, renderView: templatepath, responseData: { pagedata: { title: req.controllerData.userrole.title, headerjs: ['/extensions/periodicjs.ext.admin/js/useraccess.min.js'], extensions:CoreUtilities.getAdminMenu() }, userrole:req.controllerData.userrole, user: req.user } }); } ); }; /** * updates user role in database * @param {object} req * @param {object} res * @return {object} reponds with an error page or requested view */ var update = function (req, res) { var updateuserrole = CoreUtilities.removeEmptyObjectValues(req.body); updateuserrole.name = CoreUtilities.makeNiceName(updateuserrole.title); CoreController.updateModel({ model: Userrole, id: updateuserrole.docid, updatedoc: updateuserrole, saverevision: true, population: 'privileges', res: res, req: req, successredirect: '/p-admin/userrole/edit/', appendid: true }); }; /** * deletes user role from database * @param {object} req * @param {object} res * @return {object} reponds with an error page or requested view */ var remove = function (req, res) { var userrole = req.controllerData.userrole; CoreController.deleteModel({ model: Userrole, deleteid: userrole._id, req: req, res: res, callback: function(err){ if (err) { CoreController.handleDocumentQueryErrorResponse({ err: err, res: res, req: req }); } else { CoreController.handleDocumentQueryRender({ req: req, res: res, redirecturl: '/p-admin/userroles', responseData: { result: 'success', data: 'deleted' } }); } } }); }; /** * user role controller * @module userroleController * @{@link https://github.com/typesettin/periodicjs.ext.user_access_control} * @author Yaw Joseph Etse * @copyright Copyright (c) 2014 Typesettin. All rights reserved. * @license MIT * @requires module:periodicjs.core.utilities * @requires module:periodicjs.core.controller * @param {object} resources variable injection from current periodic instance with references to the active logger and mongo session * @return {object} userlogin */ var controller = function(resources){ logger = resources.logger; mongoose = resources.mongoose; appSettings = resources.settings; CoreController = new ControllerHelper(resources); CoreUtilities = new Utilities(resources); Userrole = mongoose.model('Userrole'); Userprivilege = mongoose.model('Userprivilege'); // Usergroup = mongoose.model('Usergroup'); return{ index:index, create:create, userrole_new:userrole_new, show:show, update:update, remove:remove }; }; module.exports = controller;</code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-uacController.html">uacController</a></li><li><a href="module-userroleController.html">userroleController</a></li><li><a href="user_access_control.html">user_access_control</a></li></ul> </nav> <br clear="both"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.2</a> on Sun Oct 12 2014 19:22:27 GMT-0400 (EDT) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>