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
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>