1
0
forked from apxtri/apxtri

modif odmdb accessright

This commit is contained in:
philc 2024-03-28 23:17:49 +01:00
parent 4b7cf11712
commit 355b1cebd5
2 changed files with 50 additions and 5 deletions

View File

@ -221,7 +221,7 @@ Odmdb.Schema = (objectPathname, validschema, lg="en") => {
status: 404,
ref: "Odmdb",
msg: "schemanotfound",
data: { objectPathname, schema: {} },
data: { objectPathname:path.resolve(objectPathname), schema: {} },
};
}
@ -471,6 +471,7 @@ Odmdb.accessright = (apxaccessrights, role) => {
Odmdb.cud = (objectPathname, crud, itm, role, runindex = true) => {
const getschema = Odmdb.Schema(objectPathname, true);
if (getschema.status != 200) return getschema;
if (!itm[getschema.data.schema.apxid]) {
@ -486,7 +487,7 @@ Odmdb.cud = (objectPathname, crud, itm, role, runindex = true) => {
const existid = fs.existsSync(
`${objectPathname}/itm/${itm[getschema.data.schema.apxid]}.json`
);
if (log) console.log(currentmod,"Pass schema itm existid = ", existid)
/*const pathindex = `${objectPathname}/idx/lst_${getschema.data.schema.apxid}.json`;
if (!fs.existsSync(pathindex)) {
fs.outputJSONSync(pathindex, []);
@ -538,12 +539,13 @@ Odmdb.cud = (objectPathname, crud, itm, role, runindex = true) => {
getschema.data.schema.apxaccessrights,
role
);
if (log) console.log(currentmod,"accessright", accessright);
if (
(crud == "C" && !accessright.C) ||
(crud == "D" && !accessright.D) ||
(crud == "U" && !accessright.U)
) {
if (log) console.log(currentmod,"Forbidden accessright:", accessright);
return {
status: 403,
ref: "Odmdb",
@ -578,7 +580,11 @@ Odmdb.cud = (objectPathname, crud, itm, role, runindex = true) => {
itmtostore,
false
);
if (chkdata.status != 200) return chkdata;
if (chkdata.status != 200) {
if (log) console.log(currentmod,"Unconsistency data", chkdata);
return chkdata;
}
if (log) console.log(currentmod,"Data compliance with schema");
if (!getschema.data.schema.apxuniquekey)
getschema.data.schema.apxuniquekey = [];
if (log) console.log(currentmod,`${objectPathname}/itm/${chkdata.data.apxid}.json`);

View File

@ -228,8 +228,47 @@ router.get(
router.post("/itm/:objectname", checkHeaders, isAuthenticated, (req, res) => {
// Create an item of an object with no specificities
// if specificities then create a route / model that import odmdb
res.json({});
const objectPathname=`../../${req.session.header.xtribe}/objects/${req.params.objectname}`;
const postitm=Odmdb.cud(objectPathname,"C",req.body,{xprofils:req.session.header.xprofils,xalias:req.session.header.xalias});
res.status(postitm.status).json(postitm);
});
/**
* @api {put} /adminapi/odmdb/itm/:objectname - item Update
* @apiGroup Odmdb
* @apiName putItm
* @apiPermission none
* @apiDescription Update an item (data) into a collection of objectname items. Before Check data integrity with the relevant schema.
* Then create a new primarykey. For multilanguage return see nationchains/model/lg/Odmdb_xx.json.
*
* @apiParam {string} objectname Place where to create new item, schema and version are available in /objectname/conf.json
*
* @apiBody {Object} data must pass Checkjson.js with schema
*
* @apiSuccess {json} data idxprimary Value of idxprimary into objectname collection
* @apiSuccessExample {json} Success-Response:
* HTTP/1.1 200 OK
* {"status":200, "ref":"Odmdb", "msg":"cudsuccessfull", "data":{"itm":{}}}
*
* @apiError {json} schemanotfound The objectname schema is not found
* @apiError {json} pathnamedoesnotexist The objectname does not exist for the tribe
* @apiError {json} missingprimarykey Body data must have primarykey to be created
* @apiError {json} unconsistencyapxidx some Body data get unique key that already exist
* @apiError {json} checkjsonfalse The body data are not consistent with the schema
* @apiErrorExample {json}
* HTTP/1.1 404 Not Found
* {"status":404,"ref":"Odmdb","msg":"see nationchains/model/lg/Odmdb_xx.json","data":"object to render with msg"}
*
*/
router.put("/itm/:objectname", checkHeaders, isAuthenticated, (req, res) => {
// Create an item of an object with no specificities
// if specificities then create a route / model that import odmdb
const objectPathname=`../../${req.session.header.xtribe}/objects/${req.params.objectname}`;
const postitm=Odmdb.cud(objectPathname,"U",req.body,{xprofils:req.session.header.xprofils,xalias:req.session.header.xalias});
res.status(postitm.status).json(postitm);
});
router.get(
"/searchitems/:objectname/:question",
checkHeaders,