88 lines
2.9 KiB
JavaScript
88 lines
2.9 KiB
JavaScript
//Main API for managing user permissions database
|
|
const express=require('express');
|
|
const cors= require('cors');
|
|
const bodyParser= require('body-parser');
|
|
const knex= require ('knex');
|
|
|
|
const app=express();
|
|
//Enabling CORS
|
|
app.use(cors());
|
|
//Enabling req body parsing
|
|
app.use(bodyParser.json());
|
|
//Connection with database -locally
|
|
const db = knex ({
|
|
client: 'pg',
|
|
connection: {
|
|
host : '127.0.0.1',
|
|
user : 'postgres',
|
|
password : '0904',
|
|
database : 'testdb'
|
|
}
|
|
});
|
|
|
|
//Requiremenst for JSON endpoint calls
|
|
const addusertogroup= require('./endpoints/addusertogroup');
|
|
const cleargroup= require('./endpoints/cleargroup');
|
|
const addpermission= require('./endpoints/addpermission');
|
|
const clearpermissions= require('./endpoints/clearpermissions');
|
|
const testuserperm= require('./endpoints/testuserperm');
|
|
const querypermiss= require('./endpoints/querypermiss');
|
|
const listgroupusers= require('./endpoints/listgroupusers');
|
|
const listgrouppermissions= require('./endpoints/listgrouppermissions');
|
|
const listuserpermissions= require('./endpoints/listuserpermissions');
|
|
//Requiremenst for input data validation
|
|
const { addUserValidationRules, addPermissionValidationRules, validate, } = require('./validators/validator')
|
|
|
|
//Checking basics
|
|
app.get('/', (req, res) => {
|
|
res.send("Work in progress...");
|
|
})
|
|
|
|
//Call for listing all groups with their users - needed for control panel
|
|
app.get('/listgroupusers', (req, res) => {
|
|
listgroupusers.handleListGroup(req, res, db);
|
|
});
|
|
|
|
//Call for listing all permissions with their owners groups and users - needed for control panel
|
|
app.get('/listgrouppermissions', (req, res) => {
|
|
listgrouppermissions.handleListPerm(req, res, db);
|
|
});
|
|
app.get('/listuserpermissions', (req, res) => {
|
|
listuserpermissions.handleListPerm(req, res, db);
|
|
});
|
|
|
|
//Call for adding a user to a group
|
|
app.post('/addusertogroup', addUserValidationRules(), validate, (req, res) => {
|
|
addusertogroup.handleAddUserToGroup(req, res, db)});
|
|
|
|
//Call for clearing all users from group
|
|
app.post('/cleargroup', (req,res) => {
|
|
cleargroup.handleClearGroup(req, res, db);
|
|
});
|
|
|
|
//Call for adding a permission to a user or group
|
|
app.post('/addpermission', addPermissionValidationRules(), validate, (req, res) => {
|
|
addpermission.handleAddPermission(req, res, db)});
|
|
|
|
//Call for clearing all permissions from user or group
|
|
app.post('/clearpermissions', (req,res) => {
|
|
clearpermissions.handleClearPerm(req, res, db);
|
|
});
|
|
|
|
//Call for testing if a particular user has a particular permission over a
|
|
// particular object
|
|
app.post('/testuserperm', (req,res) => {
|
|
testuserperm.condTest(req, res, db);
|
|
})
|
|
|
|
//Call for querying what permissions a particular user has over a particular object
|
|
app.post('/querypermiss', (req,res) => {
|
|
querypermiss.handleQuery(req,res,db);
|
|
})
|
|
|
|
//Listening on local port 3000 -temporary, to be changed to env Var
|
|
app.listen(3000, () => {
|
|
console.log(`App is running on port 3000`);
|
|
})
|
|
|