UNPKG

git-webserver

Version:

Web Server Integrated GIT Version Control System

119 lines (118 loc) 4.09 kB
/** * Access Control setting data DB * @param {JSON} config Master Configuration JSON */ exports.accessCntrlMongoDB = function (config) { var mongoose = require("mongoose"), Schema = mongoose.Schema, autoIncrement = require("mongoose-auto-increment-fix"); if (mongoose.models && mongoose.models.accessCntrl) { return mongoose.models.accessCntrl; } mongoose.Promise = global.Promise; var mongoURI = "mongodb://" + config.dbURL + ":" + config.dbPort + "/" + config.dbName; if (config.dbUser != "" && config.dbPassword != "") { mongoURI = "mongodb://" + config.dbUser + ":" + config.dbPassword + "@" + config.dbURL + "/" + config.dbName; } mongoose.connect(mongoURI, { useNewUrlParser: true }); autoIncrement.initialize(mongoose); var accessCntrl = new Schema({ userName: { type: String, required: true }, ServerControlPannel: { type: Boolean, default: false }, Serverconfiguration: { type: Boolean, default: false }, userControl: { type: Boolean, default: false }, createRepo: { type: Boolean, default: false }, userBlocked: { type: Boolean, default: false }, timestamp: { type: Date, default: Date.now } }); accessCntrl.plugin(autoIncrement.plugin, { model: "accessCntrl", field: "Si", startAt: 1 }); return mongoose.model("accessCntrl", accessCntrl, "accessCntrl"); }; /** * @param {Object} req * @param {{userName:String}} data * @param {JSON} config Master Configuration JSON */ exports.accessCntrlCreateUser = function (req, data, config) { //TODO : Data Validation if (config.database == "Mongo") { var accessCntrl = exports.accessCntrlMongoDB(config); accessCntrl.create(data, function (err) { if (gLogging) console.log(err); }); } }; /** * Updates the current user access permission status * @param {object} req Request Object * @param {object} res Response Object * @param {JSON} config Master Configuration JSON * @param {function} next next function by express */ exports.accessCntrlGetAccessPermission = function (req, res, config, next) { if (config.database == "Mongo") { var accessCntrl = exports.accessCntrlMongoDB(config); accessCntrl.findOne({ userName: req.session.userData.userName }, function (err, result) { if (err) { if (gLogging) console.log(err); } else { if (result) { req.session.userAccess = result; delete req.session.userAccess.userName; delete req.session.userAccess.Si; delete req.session.userAccess.timestamp; if (result.userBlocked) { res.send("User Access Revoked"); } else { next(); } } else { accessCntrl.create({ userName: req.session.userData.userName }, function (err, result) { if (err) { if (gLogging) console.log(err); req.session.userAccess = {}; next(); } else { req.session.userAccess = result; delete req.session.userAccess.userName; delete req.session.userAccess.Si; delete req.session.userAccess.timestamp; next(); } }); } } }); } };